मैं स्कैला के लिए बिल्कुल नया हूं और संग्रह पदानुक्रम को समझने की कोशिश कर रहा हूं। मैं देखता हूं कि 'म्यूटेबल' और 'अपरिवर्तनीय' संग्रहों के बीच एक अंतर है, लेकिन मुझे समझ में नहीं आता कि वास्तव में कार्यान्वयन स्तर पर इसका क्या अर्थ है और यह val
और var
से कैसे संबंधित है। क्या कोई मुझे इस पर कुछ अंतर्दृष्टि दे सकता है? साथ ही, क्या प्रत्येक संग्रह वर्ग में 'म्यूटेबल' संस्करण और 'अपरिवर्तनीय' संस्करण होता है, या क्या कुछ कक्षाएं हैं जो केवल 'उत्परिवर्तनीय' या 'अपरिवर्तनीय' हो सकती हैं?स्केल संग्रह में उत्परिवर्तनीय बनाम अपरिवर्तनीय
उत्तर
उत्परिवर्तन का अर्थ है कि आप संग्रह को स्थानांतरित कर सकते हैं। इसलिए, यदि आपके पास c
संग्रह है और आप +=
के साथ एक तत्व जोड़ते हैं, तो c
बदल गया है, और इस संग्रह के हर दूसरे संदर्भ में भी है।
अपरिवर्तनीय अर्थ है कि संग्रह वस्तु कभी नहीं बदली जाती है; इसके बजाय, आप +
या ++
जैसे संचालन के साथ नई संग्रह ऑब्जेक्ट्स बनाते हैं, जो एक नया संग्रह लौटाता है। यह समवर्ती एल्गोरिदम में उपयोगी है, क्योंकि इसे संग्रह में कुछ जोड़ने के लिए लॉकिंग की आवश्यकता नहीं है। यह कुछ ओवरहेड की कीमत पर आ सकता है, लेकिन यह संपत्ति बहुत उपयोगी हो सकती है। स्कैला के अपरिवर्तनीय संग्रह fully persistent data structures हैं।
अंतर बहुत कि var
और val
के बीच करने के लिए समान है, लेकिन ध्यान रखें कि आप:
- आप एक परिवर्तनशील संग्रह में जगह एक
val
करने के लिए बाध्य संशोधित कर सकते हैं, हालांकि आपval
पुन: असाइन नहीं कर सकते
- आप एक अपरिवर्तनीय संग्रह को स्थानांतरित नहीं कर सकते हैं, लेकिन यदि इसे
var
पर असाइन किया गया है, तो आप उस को+
जैसे ऑपरेशन द्वारा बनाए गए संग्रह में पुन: असाइन कर सकते हैं।
सभी संग्रह आवश्यक रूप से उत्परिवर्तनीय और अपरिवर्तनीय रूपों में मौजूद नहीं हैं; आखिरी बार मैंने चेक किया, केवल परिवर्तनीय प्राथमिकता कतार समर्थित थीं।
अपरिवर्तनीय साधन अपरिवर्तनीय है। val
एक संदर्भ अपरिवर्तनीय बनाता है, जिसका अर्थ यह है कि आप इसे शुरू होने के बाद val
पर मान निर्दिष्ट नहीं कर सकते हैं। अपरिवर्तनीय संग्रह संग्रह को अपरिवर्तनीय बनाते हैं, इसका संदर्भ नहीं। प्रत्येक बार जब आप एक अपरिवर्तनीय संग्रह को संशोधित करते हैं, तो मूल संग्रह को स्थानांतरित करने के बजाय एक और संग्रह उत्पन्न होता है। अधिकांश संग्रहों में अपरिवर्तनीय और परिवर्तनीय दोनों संस्करण होते हैं, लेकिन पाठ्यक्रम के अपवाद भी हैं।
- 1. अपरिवर्तनीय बनाम उत्परिवर्तनीय सी #
- 2. स्कैला: उत्परिवर्तनीय बनाम अपरिवर्तनीय ऑब्जेक्ट प्रदर्शन - आउटऑफमेमरी एरर
- 3. अपरिवर्तनीय वर्ग बनाम अपरिवर्तनीय संरचना
- 4. एनएसएसटींग्स पर अंतिम शब्द: उत्परिवर्तनीय और अपरिवर्तनीय
- 5. स्केल
- 6. अपरिवर्तनीय संग्रह क्रियालेख 3
- 7. स्केल में सभी बेस अपरिवर्तनीय संग्रह अंतिम या सील क्यों हैं?
- 8. जावा में अपरिवर्तनीय सेम
- 9. मानचित्र का उपयोग कर एक उत्परिवर्तनीय संग्रह को म्यूट करना?
- 10. क्या उत्परिवर्तनीय संग्रह के लिए एक शाब्दिक वाक्यविन्यास है?
- 11. लगातार बनाम अपरिवर्तनीय डेटा संरचना
- 12. एक गहरी अपरिवर्तनीय संग्रह कैसे बनाएं?
- 13. अपरिवर्तनीय प्रकार बनाम सादे पुराने उपप्रकार
- 14. $ .each ([संग्रह]) बनाम $ ([संग्रह])। प्रत्येक()
- 15. अपरिवर्तनीय ऑब्जेक्ट
- 16. पूर्णांक अपरिवर्तनीय
- 17. WP7 सी #/XNA में उत्परिवर्तनीय तार?
- 18. समानांतरता की स्केल समांतर संग्रह की डिग्री
- 19. स्केल अपरिवर्तनीय वस्तुओं और वैल फ़ील्ड के साथ लक्षण
- 20. + = अपरिवर्तनीय सेट
- 21. म्यूटेबल बनाम अपरिवर्तनीय प्रकारों का चार्ट
- 22. संग्रह/स्ट्रिंग। बनाम संग्रह/स्ट्रिंग। इंडेक्सऑफ
- 23. जावा संग्रह मानचित्र बनाम संग्रह ढांचे
- 24. LINQ बनाम संग्रह दृश्य
- 25. जावा संग्रह। चेक * *) बनाम जेनेरिक संग्रह
- 26. जावा addAll (संग्रह) नए बनाम ArrayList (संग्रह)
- 27. स्कैला अपरिवर्तनीय बनाम परिवर्तनीय बनाम। किसी को क्या जाना चाहिए?
- 28. उत्परिवर्तनीय थ्रेड-स्थानीय डेटा के लिए उपनाम
- 29. सार्वजनिक संग्रह के लिए कस्टम संग्रह बनाम जेनेरिक संग्रह
- 30. स्केल
धन्यवाद, यह समझ में आता है! – astay13
उत्परिवर्तनीय बनाम अपरिवर्तनीय का उत्कृष्ट सारांश। अच्छा काम। – Clive
'var a = 0' में, यदि दो धागे समवर्ती रूप से' ए = 1' और 'ए = 2' करने की कोशिश करते हैं, तो यह कैसे संभाला जाता है? क्या इसे लॉकिंग की आवश्यकता नहीं है? – Jus12