Duplicar posibles:
Scala: forward references - why does this code compile?Scala y referencias hacia delante
object Omg {
class A
class B(val a: A)
private val b = new B(a)
private val a = new A
def main(args: Array[String]) {
println(b.a)
}
}
el siguiente código imprime "nulo". En java construcción similar no se compila debido a una referencia directa no válida. La pregunta es: ¿por qué compila bien en Scala? ¿Es eso por diseño, descrito en SLS o simplemente error en 2.9.1?
La cuestión que me molesta de esto es que permite un val para cambiar su valor. Eso me pone triste :-( – thoredge
es un poco extraño - muchos errores pueden ser causados por eso, y me basé en el comportamiento de Java, que requiere tener los valores inicializados antes de ser usados. – jdevelop
@jdevelop Incluso java no capta todo posibles referencias hacia adelante –