Swift 什麼時候需要mutating這個引數

2021-10-21 03:30:06 字數 1091 閱讀 3649

swift中有兩種型別:值型別和引用型別

示例:在結構體中,有乙個例項方法,如果直接修改屬性的值,編譯器會報錯。

}上面中如果不新增mutating這個修飾符,則會出錯,提示為:cannot assign to property: 『self』 is immutable

意思就是:不能給屬性分配值,因為self本身是不可變得,也就是所有的值型別的修改其成員變數的時候都需要新增mutating.

擴充套件知識:

所有結構和列舉都是swift中的值型別。這意味著您建立的任何結構和列舉例項以及它們作為屬性的任何值型別在**中傳遞時都會被複製。

example:

let hd =

resolution

(width:

1920

, height:

1080

)var cinema = hd

這麼賦值會出現什麼現象呢,如下圖顯示:

enum也是類似的,從上圖可以看到值型別在賦值得時候會發生得事情,會重新拷貝乙份內容。

類會發生什麼事情呢?讓我們來理一下:

從上圖可以看到,引用型別在發生賦值的時候,實際上是建立了新的指標,指向了原來的物件。

什麼時候需要建索引,什麼時候不需要?

什麼時候要索引?1 表的主鍵 外來鍵必須有索引 2 資料量超過300必須有索引 3 經常與其他表進行連線的表,在連線欄位上建立索引 4 經常出現在where子句的字段,特別是大表字段,必須建索引 5 索引應建立在小字段上,對於大文字字段甚至超長字段,不要建索引 什麼時候不需要索引?1 建立組合索引,...

我們什麼時候需要函式隱藏

technorati 標籤 c new,方法隱藏 肖建的一篇博文引發了我的思考。我們應該什麼時候使用函式隱藏 new關鍵字,不明白的請移步msdn public class base public class a base public class b base public class testc...

什麼時候需要使用try catch

執行預料不到的情況,或出錯的可能性很大時,使用try catch語句。1 構造乙個檔案輸入流,上傳檔案時,線上環境的記憶體情況不確定 出錯的可能性很大。2 檔案上傳寫入,資料庫事務的提交,還有攝像頭和印表機的使用 使用資料庫事務的時候使用try catch,如果事務執行成功就提交事務,如果事務執行失...