2011-08-17 10 views
7

मैं एक project के स्रोत पढ़ रहा हूँ सेट नहीं है, और वहाँ इस तरह के कोड मिला:क्यों मूल्य सीधे

private var _responded: Boolean = _ 
{ 
    _responded = false 
} 

मुझे समझ नहीं आता क्यों वह इसे इस तरह लिखा था, यह एक ही नहीं है के रूप में:

private var _responded = false 

उनके बीच क्या अंतर है?

+2

यह परेशान है। मैं सोच रहा हूं कि क्या इसमें एकाधिक विरासत गुणों के रैखिकरण के साथ कुछ करना है। –

+1

कोई फर्क नहीं पड़ता कि मुझे पता है। शायद लेखक से पूछना अच्छा विचार होगा? –

+0

पुन: एकाधिक उत्तराधिकारी - खरोंच कि, वर्रों को ओवरराइड नहीं किया जा सकता है। –

उत्तर

7

मैं उस कोड के लेखक हूं।

लेखन इस तरह:

the initialization is no longer be executed before the superclass is called 

आप को खोजने के लिए है कि चेतावनी के बारे में गूगल कर सकते हैं:

private var _responded = false 

कारणों संकलन पर यह चेतावनी (स्काला के पुराने संस्करणों के साथ, स्काला 2.9 के साथ कोई समस्या नहीं है) अधिक जानकारी।

6

मैं यहां अनुमान लगाने के लिए जा रहा हूं, लेकिन यह इंटेलिज के स्वचालित जावा से स्कैला रूपांतरण में उत्पादित कोड की तरह दिखता है।

यह कनवर्टर मूल जावा के अर्थशास्त्र को जितना संभव हो सके बनाए रखने की कोशिश करता है, और इसलिए बहुत गैर-मूर्खतापूर्ण कोड, साथ ही घोंसला वाले घोंसले और परिवर्तनीय चर के बहुत सारे उत्पादन भी करता है।

+0

के लिए लेखक से पूछूंगा क्या आप जानते हैं कि अर्थशास्त्र कैसे दो (var प्रारंभिक इनलाइन, या एक अलग ब्लॉक में) के बीच भिन्न होता है? –

+0

अधिकांश उद्देश्यों और उद्देश्यों के लिए वे वही हैं। हालांकि, परिदृश्य में, घोषणापत्र और असाइनमेंट अलग-अलग वक्तव्य होने पर अनियमित मूल्य को पढ़ने के लिए एक अन्य धागे का एक (स्वीकार्य रूप से छोटा) जोखिम होता है। –

संबंधित मुद्दे