首先声称Swift使字符串变为'可变',Are Swift "mutable" strings really mutable, or are they just like Java strings?,但继续使用普遍接受的(和非Swift )可变性定义 - 即。严格评估不变性,不考虑绑定
是否有可能实际改变字符串值,以便打印'true'?
var str = "Mutate me!"
let a1 = (unsafeAddressOf(str))
// some 'mutating operation'
let a2 = (unsafeAddressOf(str))
print(a1 == a2)
我不对'结构类型'或延迟复制语义感兴趣。这个问题是关于是否可以从Swift中修改字符串值 - 尽管看看是否可以通过其他狡猾的手段进行变异也是有趣的。 (如果不是,甚至不愿意讨论价值与参考类型instead of pure mutability considerations。)
我知道"mutating" methods但不同意那些“突变”字符串值。在上面的示例中,let
在最终程序中应该是可替换的。如果let
无法替代;或者不能证明对象是相同的,那么可变性就没有显示出来。