że mamy klasę tak:wykonywania kodu w przeciążonego konstruktora przed wywołaniem tej()
import java.net.URL
import xml._
class SearchData(xml: Node) {
def this(url: URL) = this (XML.load(url))
}
i chcemy wykonać jakiś kod przed wywołaniem this (XML.load(url))
- mówią przetestować go z try
. Można by oczekiwać, że pisząc coś jak to będzie działać:
class SearchData(xml: Node) {
def this(url: URL) {
try {
this (XML.load(url))
} catch {
case _ => this(<results/>)
}
}
}
ale nie będzie, bo Scala wymaga, aby dokonać połączenia do this()
pierwsze pismo w przeciążonego konstruktora iw tym przypadku try
staje się pierwszą wypowiedź .
Jakie byłoby rozwiązanie tego problemu?
Dobrym rozwiązaniem dla deklarowanego problemu, ale to nie jest ogólnie . Prawdopodobnie to moja wina, że ogłosiłem myląco banalny problem. W każdym razie sprawdź http://stackoverflow.com/questions/7680442/executing-code-in-overloaded-constructor-prior-to-calling-this/7687567#7687567 co nieco ewoluuje twoje rozwiązanie –