可能性の重複:
Scala: forward references - why does this code compile?スカラ座と前方参照
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でもすべてをキャッチしません可能な前方参照。 –