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
становится первым оператором.
Итак, каково было бы решение этой проблемы?