Eventuali duplicati:
Scala: forward references - why does this code compile?Scala e riferimenti in avanti
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)
}
}
il codice seguente stampa "null". In java la costruzione simile non viene compilata a causa di un riferimento forward non valido. La domanda è: perché compilare bene in Scala? È questo per progettazione, descritto in SLS o semplicemente bug in 2.9.1?
Il problema che mi infastidisce di questo è che permette un val di cambiare il suo valore. Questo mi rende triste :-( – thoredge
è un po 'strano - molti errori potrebbero essere causati da questo, e mi sono basato sul comportamento di Java, che richiede l'inizializzazione dei valori prima che vengano utilizzati. – jdevelop
@jdevelop Anche java non cattura tutto possibili riferimenti futuri –