390,swift中如果結(jié)構(gòu)體的實例是let接受的,那這個結(jié)構(gòu)體的屬性無論是var還是let,都不能修改(面試點:這種行為是由于結(jié)構(gòu)體(struct)屬于值類型。當(dāng)值類型的實例被聲明為常量的時候...

常量結(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)則不一樣。把一個引用類型的實例賦給一個常量后,仍然可以修改該實例的變量屬性。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容