【发布时间】:2016-04-12 08:01:12
【问题描述】:
在java中,一旦创建,字符串对象是不可变的。一些方法似乎改变了字符串对象,但它实际上所做的是从原始字符串对象连同修改一起创建一个新的字符串对象。我只是想知道 SWIFT 中的 String 对象是否属于这种情况?
【问题讨论】:
标签: string swift immutability
在java中,一旦创建,字符串对象是不可变的。一些方法似乎改变了字符串对象,但它实际上所做的是从原始字符串对象连同修改一起创建一个新的字符串对象。我只是想知道 SWIFT 中的 String 对象是否属于这种情况?
【问题讨论】:
标签: string swift immutability
是的,实际上是这样。 String 是一个结构体,结构体是一个值类型。
这就是为什么你不能“变异”一个有let 引用的字符串(或任何其他值类型);这是因为您无法将新对象写回let 引用。
您可以通过 var 对您附加了 setter 观察者的字符串(或任何其他值类型)的引用开始轻松地向自己证明这一点。你会看到,当你“变异”时,你设置了。
【讨论】: