可能重複:
Scala: forward references - why does this code compile?Scala和向前引用
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)
}
}
下面的代碼打印 「空」。在java中。由於無效的前向參考,類似的結構不能編譯。問題是 - 爲什麼它在Scala中編譯得很好?這是由SLS描述的設計,還是2.9.1中的錯誤?
令我困擾的問題是它允許val更改其值。這讓我很難過:-( – thoredge
這有點奇怪 - 可能會導致很多錯誤,並且我依賴於Java行爲,這需要在使用它們之前初始化值。 – jdevelop
@jdevelop即使java不能捕獲所有可能的前向引用 –