मैं कुछ इस तरह करना चाहते हैं की एक सार्वजनिक उप सदस्य उजागर (उदाहरण सरलीकृत है, लेकिन शामिल सभी महत्वपूर्ण टुकड़े):पहेली - कस्टम प्रकार के साथ निजी सदस्य
class Master
{
type DataType = Int
var counter : DataType = 0
}
class Slave(private val master : Master)
{
val counter = master.counter // (*)
}
और यहाँ (*) मैं त्रुटि:
private value master escapes its defining scope as part of type Slave.this.master.DataType
val counter = master.counter
मैं त्रुटि समझते हैं, लेकिन मैं कारण समझ में नहीं आता - प्रकार वर्ग Master
, नहीं वस्तु master
का हिस्सा है, इसलिए यह महत्वपूर्ण है अगर वर्ग निजी है, एक वस्तु नहीं खैर, कम से कम सिद्धांत में।
यह एक त्वरित समाधान का बनाने के लिए आसान है:
val counter : Master#DataType = master.counter
लेकिन मेरा मानना है कि यह बिल्कुल वैसा ही कोड का एक स्पष्ट संस्करण है के रूप में पहले, यह "केवल" अधिक टाइपिंग लेता है। क्या यह एक विशेषता है?
प्रश्न:
एक प्रकार (यहां डेटा प्रकार) वस्तु की निर्भर हो सकता है, और न वर्ग (कक्षा के कहने के अनुसार अर्थात प्रकार परिभाषा) स्काला में?
धन्यवाद, इसलिए यदि मैं इसे सही ढंग से समझता हूं (हालांकि मैंने इसे "स्केलिंग में प्रोग्रामिंग" में नहीं पढ़ा है, तो मुझे विश्वास है - या शायद यह फिसल गया है), आप कक्षा के प्रति उदाहरण प्रकार को परिभाषित नहीं कर सकते हैं, न केवल प्रति वर्ग । – greenoldman
आप अद्यतन के लिए धन्यवाद, यह बहुत ही मूल्यवान है, दुर्भाग्य से मैं वोट दें नहीं कर सकते हैं अपनी पोस्ट 1 से अधिक :-) – greenoldman
यह स्काला में उन लोगों के लिए उपयोगी चीजें हैं जो हो सकता है में से एक है एक "पकड़ लिया" जब अन्य OOP भाषाओं से आ रही। बहुत संक्षिप्त जवाब; मेरी वोट दें लायक;)। – TechNeilogy