我有一个对象数组,其类型是带有可变函数的结构。所以我得到了这个密码:
for (index, object) in objects.enumerated() {
otherArray[index] = object.someMutatingFunction(...)
}这导致了这个错误Cannot use mutating member on immutable value of type 'Blabla',我可以通过添加var来修复这个错误:
for var (index, object) in objects.enumerated() {
otherArray[index] = object.someMutatingFunction(...)
}但是,我得到了另一个警告Variable 'index' was never mutated; consider changing to 'let' constant,我不知道如何修复优雅。唯一的想法就是添加一个新的var变量。我还能做些什么来阻止这个警告吗?
发布于 2017-03-28 22:52:33
在object变量前面加上var关键字:
struct S {
mutating func f() { }
}
let array = [S(), S()]
for (index, var object) in array.enumerated() {
object.f()
}注意,正如哈米什在对这个答案的评论中指出的那样,array的元素不会被修改。只能修改object循环范围内的for的本地副本。
如果您想修改array,您必须在for循环范围之外声明它为var,然后将其分配给array索引。
https://stackoverflow.com/questions/43081266
复制相似问题