Mögliche Duplizieren:
Scala: forward references - why does this code compile?Scala und Vorwärtsreferenzen
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)
}
}
der folgende Code druckt "null". In Java. Eine ähnliche Konstruktion wird wegen ungültiger Vorwärtsreferenz nicht kompiliert. Die Frage ist - warum lässt es sich in Scala gut übersetzen? Ist das per Design, in SLS beschrieben oder einfach in 2.9.1 Bug?
Das Problem, das ärgert mich daran ist, dass es ein val seinen Wert zu ändern. Das macht mich traurig :-( – thoredge
es ist ein bisschen seltsam - viele Fehler könnten dadurch verursacht werden, und ich verließ mich auf Java-Verhalten, das Werte initialisiert werden muss, bevor sie verwendet werden. – jdevelop
@jdevelop Sogar Java fängt nicht alles ab mögliche Vorwärtsreferenzen –