In the Swift Language Reference, under String Mutability它说:当使用var时,Swift是否有二次字符串连接?
您指示特定字符串是否可以修改(或突变)通过将其分配给一个变量(在这种情况下,它可以被修改),或者以恒定的(在这种情况下,它不能修改)
这我不清楚,如果“它”是可变的是变量或值。
例如,如果我写:
var s = ""
for i in 0...100 {
s += "a"
}
它是类似于创建NSMutableString
并调用appendString
100倍(即线性成本)?
或者它是否类似于创建一系列更大的NSString
实例并将它们与stringByAppendingString
(即二次成本)相结合?
或者它可能会在幕后创建某种绳索结构,因此它是不可变的和线性聚合?
@MarkDickinson我实际上已经尝试过了,它的运行速度超出了我的预期。所以这似乎意味着可变的。但是,当两个可变变量彼此相等时,更新一个不会更新另一个变量,这意味着不可变。从语言设计的角度来看,将运行时类型信息放入var-vs-val似乎很奇怪。所以我真的不确定它是什么。 –