常量結(jié)構(gòu)體的存儲屬性
如果創(chuàng)建了一個結(jié)構(gòu)體的實例并將其賦值給一個常量貌嫡,則無法修改該實例的任何屬性比驻,即使有屬性被聲明為變量也不行:
let rangeOfFourItems = FixedLengthRange(firstValue: 0, length: 4)
// 該區(qū)間表示整數(shù)0该溯,1,2别惦,3
rangeOfFourItems.firstValue = 6
// 盡管 firstValue 是個變量屬性狈茉,這里還是會報錯
因為 rangeOfFourItems
被聲明成了常量(用let
關(guān)鍵字),即使 firstValue 是一個變量屬性掸掸,也無法再修改它了氯庆。
這種行為是由于結(jié)構(gòu)體(struct
)屬于值類型。當值類型的實例被聲明為常量的時候扰付,它的所有屬性也就成了常量堤撵。屬于引用類型的類(class
)則不一樣。把一個引用類型的實例賦給一個常量后羽莺,仍然可以修改該實例的變量屬性实昨。