क्या मुझे इस अंतिम संपत्ति को संशोधित करने में सक्षम होना चाहिए? किताबें कहती हैं कि मुझे चाहिए लेकिन मुझे एक त्रुटि मिल रही है

ग्रोवी नोब यहाँ, मैं अपनी पहली ग्रोवी पुस्तक के माध्यम से काम कर रहा हूं और इसमें उदाहरण कोड है जहां यह मोटे तौर पर बताता है

"अगर मैं एक संपत्ति केवल एकमात्र संपत्ति बनना चाहता हूं तो इसे अंतिम घोषित करें। यह अंतिम फ़ील्ड को परिभाषित नहीं कर रहा है, लेकिन केवल पढ़ने योग्य संपत्ति-आप संपत्ति को उदाहरण के भीतर बदल सकते हैं परिभाषित वर्ग के तरीके, लेकिन बाहर से नहीं "

मेरे पास प्रश्न में कोड है, लेकिन मुझे एक त्रुटि बता रही है:

कन्स्ट्रक्टर के बाहर अंतिम फ़ील्ड 'मील' को संशोधित नहीं कर सकता।

कोड:

class Car
{
    final miles = 0

    def getMiles()
    {
        println "getMiles called"
        miles
    }

    def drive(dist){if (dist>0) miles += dist }

}

पुस्तक कहती है कि मुझे ड्राइव इंस्टेंस विधि के भीतर मील को संशोधित करने में सक्षम होना चाहिए, क्या मैं कुछ गलत कर रहा हूं?

3
मैं एक ही पुस्तक के माध्यम से काम कर रहा हूं और एक ही कोड लिखा है और पोस्टिंग के लिए धन्यवाद, यह मुद्दा दिया गया था!
जोड़ा लेखक ericraio, स्रोत

1 उत्तर

मुझे लगता है कि उनका क्या मतलब था (सुनिश्चित नहीं है कि उन्होंने क्या कहा है, यदि आप पैराफ्रेशिंग कर रहे हैं) यह है कि कोई सेटटर विधि परिभाषित नहीं है, इसलिए इसे कक्षा के बाहर से संशोधित नहीं किया जा सकता है।

यह है हालांकि, अभी भी एक अंतिम संपत्ति है, जिसका अर्थ है कि इसे सेट के बाद संशोधित नहीं किया जा सकता है, जो एक कन्स्ट्रक्टर में या घोषणा के दौरान होगा।

संपत्ति और फ़ील्ड नियम

उन्होंने कहा, इन दो मुद्दों को देखें: 1628 , 2752 , इसलिए अधिक अन्वेषण आवश्यक हो सकता है, हालांकि यह स्थानीय स्क्रिप्ट गुणों तक सीमित प्रतीत होता है।

My guess is you're using a 1.7+ Groovy, while the book targets <= 1.6.

यह SO प्रश्न भी देखें।

2
जोड़ा
क्या मैं कुछ ऐसा घोषित कर सकता हूं: def अंतिम मील ?
जोड़ा लेखक ProfessionalAmateur, स्रोत
वह प्रश्न जो आप संदर्भित करते हैं, उसी पुस्तक और अध्याय के बारे में बोलता हूं। ऐसा लगता है कि किताब <1.6 और आईएम के साथ खेलने के लिए 1.8 के लिए लिखा गया था।
जोड़ा लेखक ProfessionalAmateur, स्रोत
@ व्यावसायिक व्यवसायिक हाँ; उन्होंने इसे ठीक किया (हालांकि इसमें एक या दो साल लग गए!)
जोड़ा लेखक Dave Newton, स्रोत