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 变量。我还能做些什么来防止出现此警告吗?
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索引。
| 归档时间: |
|
| 查看次数: |
857 次 |
| 最近记录: |