常量結(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)屬于值類型。當(dāng)值類型的實例被聲明為常量的時候,它的所有屬性也就成了常量。屬于引用類型的類(class)則不一樣。把一個引用類型的實例賦給一個常量后,仍然可以修改該實例的變量屬性。