Swift 的 var list.enumerated()

Béa*_*tat 3 for-loop var let swift

我有一个对象数组,其类型是具有变异函数的结构。所以我得到了这个代码:

for (index, object) in objects.enumerated() {
     otherArray[index] = object.someMutatingFunction(...)
}
Run Code Online (Sandbox Code Playgroud)

这导致我出现此错误Cannot use mutating member on immutable value of type 'Blabla',我可以通过添加 var 来修复该错误:

for var (index, object) in objects.enumerated() {
     otherArray[index] = object.someMutatingFunction(...)
}
Run Code Online (Sandbox Code Playgroud)

但后来我收到另一个警告Variable 'index' was never mutated; consider changing to 'let' constant,我不知道如何优雅地修复。唯一的想法是添加一个新的 var 变量。我还能做些什么来防止出现此警告吗?

par*_*par 5

object使用关键字作为变量前缀var

struct S {
    mutating func f() { }
}

let array = [S(), S()]

for (index, var object) in array.enumerated() {
    object.f()
}
Run Code Online (Sandbox Code Playgroud)

请注意,哈米什在对此答案的评论中指出, 的元素array不会被修改。只能修改循环object范围内的本地副本。for

如果要修改,array必须var在循环范围之外声明它for,然后分配给array索引。