String 在swift中,字符串对象一旦创建就不可变吗?

String 在swift中,字符串对象一旦创建就不可变吗?,string,swift,immutability,String,Swift,Immutability,在java中,一旦创建,字符串对象是不可变的。有些方法似乎会更改字符串对象,但实际上它所做的是从原始字符串对象创建一个新的字符串对象以及修改。我只是想知道SWIFT中的字符串对象是否也是这样 是的,实际上是这样。字符串是结构,结构是值类型 这就是为什么您不能“变异”一个字符串(或任何其他值类型),您有一个let引用;这是因为您无法将新对象写回let引用 您可以很容易地向自己证明这一点,方法是从对字符串(或任何其他值类型)的var引用开始,并将setter观察器附加到该字符串。当你“变异”时,你会

在java中,一旦创建,字符串对象是不可变的。有些方法似乎会更改字符串对象,但实际上它所做的是从原始字符串对象创建一个新的字符串对象以及修改。我只是想知道SWIFT中的字符串对象是否也是这样

是的,实际上是这样。字符串是结构,结构是值类型

这就是为什么您不能“变异”一个字符串(或任何其他值类型),您有一个
let
引用;这是因为您无法将新对象写回
let
引用


您可以很容易地向自己证明这一点,方法是从对字符串(或任何其他值类型)的
var
引用开始,并将setter观察器附加到该字符串。当你“变异”时,你会看到这一点。马特,非常感谢你的帮助!你能把答案再详细一点吗?也许再详细解释一下?再次感谢你的帮助!怎么解释?你问了一个是不是的问题。好的,是的。这个答案虽然正确,但如果放在标记为重复的问题中提供的答案旁边,读起来确实不完整。“那里的答案更多地给出了托尼所要求的细节。更重要的是,为什么这个问题不应该在这里提出,”nhgrif说。它是复制品。在这个地方,缺乏关注正是它应得的。