Выполнение кода в перегруженном конструкторе перед вызовом this ()

Say у нас есть такой класс:

import java.net.URL
import xml._

class SearchData(xml: Node) {
  def this(url: URL) = this (XML.load(url))
}

, и мы хотим выполнить некоторый код перед вызовом this (XML.load (url)) - скажем, протестируйте его с помощью try . ожидайте, что написание чего-то вроде этого сработает:

class SearchData(xml: Node) {
  def this(url: URL) {
    try {
        this (XML.load(url))
    } catch {
      case _ => this(<results/>)
    }
  }
}

, но не будет, потому что Scala требует, чтобы вы вызывали this () первый оператор в перегруженном конструкторе, а в данном случае try становится первым оператором.

Итак, каково было бы решение этой проблемы?

5
задан Nikita Volkov 6 October 2011 в 21:05
поделиться