संभव डुप्लिकेट:
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)
}
}
निम्नलिखित कोड प्रिंट "अशक्त"। जावा में इसी तरह के निर्माण अमान्य आगे संदर्भ के कारण संकलित नहीं है। सवाल यह है - यह स्कैला में अच्छी तरह से संकलित क्यों होता है? क्या यह डिज़ाइन द्वारा एसएलएस में वर्णित है या बस 2.9.1 में बग है?
मुद्दा यह है कि मुझे गुस्सा दिलाती है के बारे में यह है कि यह एक वैल अपने मूल्य बदलने की अनुमति देता है। इससे मुझे दुःख होता है :-( – thoredge
यह थोड़ा अजीब है - इसके द्वारा बहुत सी त्रुटि हो सकती है, और मैंने जावा व्यवहार पर भरोसा किया, जिसके लिए उपयोग किए जाने से पहले मूल्यों को प्रारंभ करने की आवश्यकता होती है। – jdevelop
@jdevelop यहां तक कि जावा सभी को नहीं पकड़ता संभावित आगे संदर्भ। –