Scala i referencje do przodu [duplikat]

Możliwy duplikat:
Scala: referencje do przodu - dlaczego ten kod się kompiluje?

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)
  }

}

poniższy kod wypisuje „null”. W Javie. podobna konstrukcja nie kompiluje się z powodu nieprawidłowego odwołania do przodu. Pytanie brzmi - dlaczego kompiluje się dobrze w Scali? Czy to z założenia, opisane w SLS lub po prostu błąd w 2.9.1?

questionAnswers(4)

yourAnswerToTheQuestion