2016-05-11 4 views
8

This Scala tutorial एक प्रारंभिक मूल्य के बिना चर घोषित करने के बारे में कहने के लिए निम्न है: इस प्रकारएक प्रारंभिक मूल्य के बिना एक चर घोषित

आप एक चर के लिए किसी भी प्रारंभिक मूल्य निर्दिष्ट नहीं करते हैं, तो यह मान्य है:

scala> var myVar :Int; 
<console>:10: error: only classes can have declared but undefined members 
(Note that variables need to be initialized to be defined) 
     var myVar :Int; 
     ^

scala> val myVal :String; 
<console>:10: error: only classes can have declared but undefined members 
     val myVal :String; 
0123:
var myVar :Int; 
val myVal :String; 

लेकिन जब मैं स्काला आरईपीएल में उस कोड का प्रयास करें, मैं इन त्रुटियों को मिलता है

यह क्यों है? स्कैला के पुराने संस्करण के लिए ट्यूटोरियल है?
मुझे स्कैला का एक विशिष्ट संस्करण नहीं मिला जो ट्यूटोरियल के लिए लिखा गया है, लेकिन मैं ओपनजेडीके 64 बिट, जावा 1.8.0_66 पर स्कैला संस्करण 2.11.7 चला रहा हूं।


  • ट्यूटोरियल पुरानी हो चुकी है, या मेरे पर्यावरण के साथ समस्या है?

  • क्या इसे प्रारंभ किए बिना एक चर (var या val) घोषित करना संभव है?

उत्तर

17

त्रुटि सही है, आप केवल एक सार वर्ग या विशेषता पर ही ऐसा कर सकते हैं। ट्यूटोरियल यह मान सकता है कि आप उस कोड को एक अमूर्त वर्ग के अंदर लिख रहे हैं।

यह कुछ डिफ़ॉल्ट मान पर चर प्रारंभ करने में संभव है:

var i: Int = _ 
var s: String = _ 

लेकिन वह अनिवार्य रूप से के रूप में ही है:

var i: Int = 0 
var s: String = null 
+0

इन "चूक" मूल्यों कहाँ से आ रहे हैं? क्या यह इस प्रकार पर निर्भर है? क्या स्कैला कंपाइलर मूल प्रकारों जैसे 'स्ट्रिंग' के लिए डिफ़ॉल्ट परिभाषित करता है? – juanmirocks

+0

मेरे अपने प्रश्न का उत्तर देते हुए, मुझे लगता है कि सभी 'AnyRef' को' शून्य 'पर डिफॉल्ट किया गया है, और' AnyVal' का अपना डिफ़ॉल्ट मान किसी भी तरह परिभाषित होना चाहिए (अभी भी यह नहीं दिखता कि यह कहां होता है)। – juanmirocks

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