आईई। क्या एक ऐसा वर्ग बनाना संभव है जो कक्षा के बाहर से असाइन नहीं किया जा सके?क्या मैं एक पंक्ति में "सार्वजनिक मूल्य" लेकिन "निजी var" स्कैला में कर सकता हूं?
उत्तर
अभी, नहीं, ऐसा करने का कोई तरीका नहीं है।
class Hider {
private[this] var xHidden: Int = 0
def x = xHidden
private def x_=(x0: Int) { xHidden = x0 }
}
अब कक्षा में ही केवल एक है जो अंतर्निहित क्षेत्र xHidden
में हेरफेर कर सकते हैं, जबकि कक्षा के अन्य उदाहरण सेटर विधि का उपयोग कर सकते हैं:
आप निम्न तीन लाइन समाधान करने के लिए सीमित कर रहे हैं और हर कोई गेटर विधि देख सकता है।
यदि आप अलग-अलग नामों का उपयोग करने में कोई फर्क नहीं पड़ता है, तो आप केवल var निजी बना सकते हैं और सेटर (दो पंक्तियां) भूल सकते हैं।
कोई "var to me, val to them" कीवर्ड नहीं है।
आप की तरह कुछ कर सकता है:
class Test {
private var myprivatevar = ""
def publicvar = myprivatevar
}
अन्य वर्गों से, आप केवल publicvar
का उपयोग करने में सक्षम होगा और क्योंकि वहां कोई publicvar_=
विधि, आप बाहर से इसे करने के लिए नहीं सौंप सकते।
क्या आप कहना चाहते हैं कि इसे एक संशोधक के साथ करना संभव नहीं है? –
इसके अलावा आपके समाधान में मुझे var और def के लिए अलग-अलग नामों के साथ आना है, है ना? –
आप नाम का पुन: उपयोग नहीं कर सकते (मेरे मामले में, 'myprivatevar') क्योंकि स्कैला स्पष्ट रूप से एक (इस मामले में, निजी) गेटटर और चर के लिए सेटटर बनाता है; यदि आप 'def myprivatevar = this.myprivatevar' करने का प्रयास करते हैं तो आपको एक नाम टकराव मिलेगा क्योंकि विधि को दो बार परिभाषित किया गया है। – andri
आप निश्चित रूप से कुछ var बनाते हैं और फिर इसे क्षेत्र को परिभाषित करने वाले वर्ग के लिए निजी बनाते हैं।
scala> class Holder(private var someValue: String) {
| def getValueOfOther(other: Holder) = other.someValue
| def combinedWith(holder: Holder) = new Holder(holder1.someValue + " " + holder2.someValue)
| def value = someValue
| }
defined class Holder
scala> val holder1 = new Holder("foo")
holder1: Holder = [email protected]
scala> val holder2 = new Holder("bar")
holder2: Holder = [email protected]
scala> holder2.getValueOfOther(holder1)
res5: String = foo
scala> val holder3 = holder1 combinedWith holder2
holder3: Holder = [email protected]
scala> holder3.value
res6: String = foo bar
- 1. स्कैला में सहयोगी कन्स्ट्रक्टर सार्वजनिक रखने के दौरान मैं प्राथमिक कन्स्ट्रक्टर निजी बना सकता हूं?
- 2. क्या मैं स्कैला में ब्रांड्स को अधिभारित कर सकता हूं?
- 3. स्कैला: क्या मैं एक सार्वजनिक क्षेत्र घोषित कर सकता हूं जो संकलित होने पर गेटर्स और सेटर्स उत्पन्न नहीं करेगा?
- 4. मैं एक ही पंक्ति में कैसे प्रिंट कर सकता हूं?
- 5. क्या मैं व्युत्पन्न कक्षा में सार्वजनिक सदस्य चर निजी बना सकता हूं?
- 6. क्या मैं कक्षा को अनदेखा कर सकता हूं लेकिन बाहरी रूप से सील कर सकता हूं?
- 7. क्या मैं अपना Google Analytics परिणाम सार्वजनिक कर सकता हूं?
- 8. क्या मैं एक छिपी हुई (लेकिन सार्वजनिक) विधि को ओवरराइड कर सकता हूं और इसकी सुपर विधि कह सकता हूं?
- 9. क्या मैं स्कैला में एक साथ कई पैकेजों से आयात कर सकता हूं?
- 10. मैं स्कैला में प्राइमेटिव का उपयोग कैसे कर सकता हूं?
- 11. क्या मैं कॉलबैक के रूप में निजी उदाहरण विधियों का उपयोग कर सकता हूं?
- 12. पाइथन में एक पंक्ति में वैश्विक var को ओवरराइट करें?
- 13. स्कैला में एक गैर-विधि-स्थानीय var क्या है?
- 14. क्या मैं प्रतिबिंब का उपयोग कर सी # में एक निजी रीडोनली विरासत क्षेत्र बदल सकता हूं?
- 15. जब मैं सार्वजनिक सदस्य समारोह से संदर्भ वापस करता हूं तो मैं निजी सदस्यों का खुलासा क्यों कर सकता हूं?
- 16. मैं स्कैला में एक विषम ऐरे कैसे बना सकता हूं?
- 17. कैश-कंट्रोल में निजी बनाम सार्वजनिक
- 18. स्कैला - क्या मैं करीबी विधियों को अधिभारित कर सकता हूं?
- 19. क्या मैं कक्षा के शरीर में एक निजी कन्स्ट्रक्टर डिफ़ॉल्ट कर सकता हूं या नहीं?
- 20. स्कैला: क्या मैं एक विकल्प को varargs में परिवर्तित कर सकता हूं?
- 21. क्या मैं एक ही समय में रीबेज कर सकता हूं और स्क्वैश कर सकता हूं?
- 22. क्या मैं SQL सर्वर (सी #) में एक पंक्ति का उपयोग INSERT या अद्यतन कर सकता हूं?
- 23. मैं स्मार्टगिट में एक पंक्ति कैसे लगा सकता हूं?
- 24. क्या मैं सार्वजनिक गेटर और निजी सेटर के साथ संपत्तियां बना सकता हूं?
- 25. क्या मैं स्कैला में कई तत्वों को एक तत्व उत्पन्न या मानचित्र कर सकता हूं?
- 26. मैं डेटाटेबल.net में एक HTML तालिका पंक्ति कैसे पास कर सकता हूं fnAddData
- 27. क्या मैं विम में एक फाइल ट्रांसफर कर सकता हूं?
- 28. मैं WinForms एप्लिकेशन में एक पंक्ति कैसे बना सकता हूं?
- 29. स्कैला में सूची में अधिकतम मूल्य का सूचकांक कैसे प्राप्त कर सकता हूं?
- 30. क्या मैं क्लोजर में एक निर्धारित शफल कर सकता हूं?
क्या स्कैला समुदाय में चर्चा की गई इस तरह की खोजशब्द की संभावना थी? –
@ लुकसज़ - जब तक मैं सुन रहा हूं, नहीं, जहां मैं सुन रहा हूं। (मैं हर जगह नहीं सुनता और मैं हमेशा के लिए चारों ओर नहीं रहा हूं।) लेकिन मुझे संदेह है कि इसे अधिक पक्ष नहीं मिलेगा, क्योंकि भाषा परिभाषा को कम रखने पर जोर दिया जाता है (यानी कुछ विशेष मामले, भले ही आपके द्वारा किए गए मामलों में आपको बड़ी अभिव्यक्ति शक्ति मिलती है), और उत्परिवर्तनीय लोगों पर अपरिवर्तनीय समाधान के पक्ष में। –