Supponiamo di avere una classe come questa:esecuzione di codice nel costruttore di overload prima di chiamare questo()
import java.net.URL
import xml._
class SearchData(xml: Node) {
def this(url: URL) = this (XML.load(url))
}
e vogliamo eseguire del codice prima di chiamare this (XML.load(url))
- dire di prova con try
. Ci si aspetterebbe che scrivere qualcosa di simile a questo dovrebbe funzionare:
class SearchData(xml: Node) {
def this(url: URL) {
try {
this (XML.load(url))
} catch {
case _ => this(<results/>)
}
}
}
, ma non sarà così, perché Scala richiede che si effettua la chiamata al this()
la prima istruzione nel costruttore sovraccaricato e in questo caso try
diventa la prima dichiarazione .
Quindi quale sarebbe la soluzione a questo problema?
Una buona soluzione per il problema dichiarata, ma non è generale . Probabilmente è colpa mia se ho dichiarato un problema fuorviante di poco conto. In ogni caso, controlla http://stackoverflow.com/questions/7680442/executing-code-in-overloaded-constructor-prior-to-calling-this/7687567#7687567 che alquanto evolve la tua soluzione –