2014-09-13 6 views
7

स्विफ्ट में, हम let के साथ एक अपरिवर्तनीय चर इंगित करते हैं।स्विफ्ट में एक अपरिवर्तनीय वस्तु के गुण क्यों हैं?

मुझे समझ में नहीं आता कि आप उनकी संपत्ति क्यों बदलते हैं। उदाहरण के लिए:

let lbl = UILabel() 
lbl.textAlignment = .Right() 

तुम क्यों textAlignment बदल सकता हूँ? संपत्ति को म्यूट करने के आधार पर, हमने वैरिएबल lbl को भी म्यूटेट नहीं किया है जो स्थिर होना चाहिए?

+0

* चर/बाध्यकारी * को एक अलग मूल्य पर फिर से असाइन नहीं किया जा सकता है; यह अकेले उस वस्तु के उत्परिवर्तन के बारे में कुछ भी नहीं कहता है जो चर के मूल्यांकन से होता है। यह जावा और सी # में 'अंतिम/पठनीय' चर/फ़ील्ड जैसा ही है। – user2864740

उत्तर

14

Swift Programming Language के अनुसार, लगातार structs के गुण भी लगातार कर रहे हैं, लेकिन लगातार कक्षाएं परिवर्तनशील गुण नहीं है सकते हैं।

उनके शब्दों में,

आप एक संरचना का एक उदाहरण बना सकते हैं और एक निरंतर करने के लिए कि उदाहरण आवंटित हैं, तो आप उदाहरण के गुण संशोधित नहीं कर सकते, भले ही वे चर गुण के रूप में घोषित किया गया ...

कक्षाओं के लिए यह भी सच नहीं है, जो संदर्भ प्रकार हैं। यदि आप निरंतर संदर्भ प्रकार का उदाहरण आवंटित करते हैं, तो भी आप उस आवृत्ति के चर गुणों को बदल सकते हैं।

+0

धन्यवाद, यह पूरी तरह से बताता है। जब मैं कर सकता हूं स्वीकार करेंगे। –

3

कक्षा प्रकार संदर्भ प्रकार हैं - मान किसी वस्तु के लिए सूचक है। इसे बदलने में सक्षम नहीं होने का मतलब है किसी अन्य ऑब्जेक्ट को इंगित करने के लिए, संदर्भ को बदलना नहीं है। ऑब्जेक्ट की ओर इशारा करते हुए आप क्या कर सकते हैं इसके साथ इसका कोई संबंध नहीं है।

संबंधित मुद्दे