首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >var list.enumerated()

var list.enumerated()
EN

Stack Overflow用户
提问于 2017-03-28 22:47:23
回答 1查看 707关注 0票数 3

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

代码语言:javascript
复制
for (index, object) in objects.enumerated() {
     otherArray[index] = object.someMutatingFunction(...)
}

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

代码语言:javascript
复制
for var (index, object) in objects.enumerated() {
     otherArray[index] = object.someMutatingFunction(...)
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-28 22:52:33

object变量前面加上var关键字:

代码语言:javascript
复制
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索引。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43081266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档