Swift字符串是值類型
字符串是值類型(Strings Are Value Types)
Swift 的String
類型是值類型。 如果您創建了一個新的字符串,那麼當其進行常量、變量賦值操作或在函數/方法中傳遞時,會進行值拷貝。 任何情況下,都會對已有字符串值創建新副本,並對該新副本進行傳遞或賦值操作。 值類型在 結構體和枚舉是值類型 中進行了說明。
注意:
與 Cocoa 中的NSString
不同,當您在 Cocoa 中創建了一個NSString
實例,並將其傳遞給一個函數/方法,或者賦值給一個變量,您傳遞或賦值的是該NSString
實例的一個引用,除非您特彆要求進行值拷貝,否則字符串不會生成新的副本來進行賦值操作。
Swift 默認字符串拷貝的方式保證了在函數/方法中傳遞的是字符串的值。 很明顯無論該值來自於哪裡,都是您獨自擁有的。 您可以放心您傳遞的字符串本身不會被更改。
在實際編譯時,Swift 編譯器會優化字符串的使用,使實際的複製隻發生在絕對必要的情況下,這意味著您將字符串作為值類型的同時可以獲得極高的性能。