स्काला में, वास्तव में 'val a: A = _' (अंडरस्कोर) का क्या अर्थ है?


जवाबों:


143

val a: A = _एक संकलन त्रुटि है। उदाहरण के लिए:

scala> val a: String = _
<console>:1: error: unbound placeholder parameter
       val a: String = _
                       ^

क्या काम करता है var a: A = _(के varबजाय नोट val) जैसा कि चक ने अपने उत्तर में कहा है, यह चर को एक डिफ़ॉल्ट मान पर आरंभ करता है। स्काला भाषा विशिष्टता से:

0 यदि टी इंट है या इसके एक प्रकार का है,
तो 0 एल अगर टी लंबा है,
तो
0.0 है , यदि टी फ्लोट है, तो 0.0 डी है , यदि टी डबल है,
टी टी बूलियन है तो गलत है,
(यदि टी यूनिट है, तो
अन्य सभी प्रकारों के लिए अशक्त है) टी


6
हा, वैल / वर स्विच पर अच्छी पकड़ है। मेरा दिमाग अभी-अभी इसके पिछले हिस्से से टकराया है।
चक

2
यह क्यों काम नहीं किया गया है val?
एरिक कपलुन

4
@ एरिक ऑलिक: यह शुद्ध अटकलें हैं, लेकिन val a: Int = _शायद एक संकलन त्रुटि है क्योंकि अगर यह काम करता है तो यह खराब अभ्यास होगा। यह सिर्फ लिखने का एक अस्पष्ट तरीका होगा val a: Int = 0varडिफ़ॉल्ट मान सेट करना समझ में आता है क्योंकि varपरिवर्तन की उम्मीद है, लेकिन valयह तय है कि सबसे अच्छा अभ्यास एक मूल्य को स्पष्ट रूप से निर्दिष्ट करना होगा।
शुकलस्वाग

1
@ शुकलस्वाग: यदि आप इसके पूर्णांक को जानते हैं तो ही। मैं इसे एक प्रकार की एक वैली को इनिशियलाइज़ करने के लिए उपयोग करने की कोशिश कर रहा हूं जो मुझे अभी तक नहीं पता है।
एड्रियन मे

33

यह aप्रकार के डिफ़ॉल्ट मान को इनिशियलाइज़ करता है A। उदाहरण के लिए, किसी Int का डिफ़ॉल्ट मान 0 है और संदर्भ प्रकार का डिफ़ॉल्ट मान शून्य है।


10
उस वर्ग का डिफ़ॉल्ट मान क्या है जो NotNullविशेषता में मिलाता है ? :-)
जीन-फिलिप पेलेट

9
@ जीन-फिलिप्पेलेट: जैसा कि स्काला 2.9.0.1 (जो मैंने हाल ही में उपयोग किया गया सबसे अधिक संस्करण है), एक वर्ग का डिफ़ॉल्ट मान जो नोटनॉल विशेषता में मिश्रित होता है, वह है - नाटकीय ठहराव - अशक्त । मुझे उम्मीद है कि यह कुछ बिंदु पर बदल जाएगा, लेकिन वर्तमान में यह _ट्रम्प लगता है NotNull
चक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.