Digamos que tenemos una clase como esta:Ejecución de código en el constructor sobrecargado antes de llamar esta()
import java.net.URL
import xml._
class SearchData(xml: Node) {
def this(url: URL) = this (XML.load(url))
}
y queremos ejecutar algún código antes de llamar a this (XML.load(url))
- decirlo prueba con try
. Uno esperaría que escribir algo como esto funcionaría:
class SearchData(xml: Node) {
def this(url: URL) {
try {
this (XML.load(url))
} catch {
case _ => this(<results/>)
}
}
}
pero no lo hará, porque Scala requiere que usted hace la llamada a this()
la primera instrucción del constructor sobrecargado y en este caso try
se convierte en la primera declaración .
¿Cuál sería la solución a este problema?
Una buena solución para el problema declarado, pero no es en general . Probablemente es mi culpa que declare un problema engañosamente trivial. De todos modos echa un vistazo a http://stackoverflow.com/questions/7680442/executing-code-in-overloaded-constructor-prior-to-calling-this/7687567#7687567 que de alguna manera evoluciona tu solución –