Swift 3数组var不再可变



我正在将一个项目从Swift 2.2迁移到3.0,并且在连接数组时出现错误。以前是这样的:

var x : [(index:Int, value:Float)] = []
for i in 0..<n {
    x += [(i, Float(i))]
}

抛出:

Left side of mutating operator isn't mutable: 'x' is immutable

在这种情况下,我不清楚为什么一个被声明为var的数组会是不可变的。

我已经搜索了Swift 3文档,我不清楚哪些规则改变了,哪些会导致这些错误,或者如何知道何时数组var将是不可变的vs可变的。

似乎是数组类型把事情弄得一团糟,你需要:

var x: [(index:Int, value:Float)] = []
for i in 0..<n {
    x += [(index: i, value: Float(i))]
}

这些数组元素真的看起来应该是某种类型的结构体

刚刚在XCode 8 Playground上试过了

class MyClass {
var positions : [Float] = []
var values : [Float] = []
func myFunc(p:Float, v:Float) {
    positions.append(p)
    self.values.append(v)
   }
}

最新更新