देखो:मैं सार्वजनिक सदस्यों के रूप में स्कैला कन्स्ट्रक्टर तर्कों का खुलासा कैसे करूं? इस उदाहरण को
class Point(x: Double, y: Double){
override def toString = "x: " + x + ", y: " + y
def +(sourcePoint: Point) : Point = {
return new Point(x + sourcePoint.x, y + sourcePoint.y
}
}
आप देख सकते हैं मैं प्वाइंट वर्ग पर एक +
ऑपरेटर विधि को परिभाषित करना चाहते। लेकिन इस काम नहीं करेगा क्योंकि उस विधि में, x
और y
sourcePoint
स्थानीय चर पर पहुँचा नहीं जा सकता क्योंकि वे निजी हैं, इसलिए मैं इस में उदाहरण बदल दिया है:
class Point(_x: Double, _y: Double){
var x = _x
var y = _y
override def toString = "x: " + x + ", y: " + y
def +(sourcePoint: Point) : Point = {
return new Point(x + sourcePoint.x, y + sourcePoint.y)
}
}
कि स्पष्ट रूप से काम किया है, तथापि _x -> x और _y -> y से जाने के बजाय इन चर को परिभाषित करने का एक आसान तरीका है।
मदद और समय के लिए धन्यवाद! :)
जब आप 'क्लास प्वाइंट (एक्स: डबल, वाई: डबल)', 'x' और' y' लिखते हैं तो प्राथमिक कन्स्ट्रक्टर के लिए पैरामीटर हैं, कक्षा में फिल्में नहीं। उन्हें कक्षा के क्षेत्र बनाने के लिए, आपको 'val' या' var' की आवश्यकता है। – markmarch
आठ, धन्यवाद! अब स्पष्ट लगता है;) – user1285925
यह थोड़ा ओटी है, लेकिन अपनी '+' विधि में स्पष्ट वापसी का उपयोग न करें, स्कैला में स्पष्ट रिटर्न को अपवादित किया गया है और सीधे कैच किया गया है और फिर परिणाम लौटाया गया है। बंद करने से बाहर निकलने के लिए केवल इसका इस्तेमाल करें। – drexin