2016-12-16 59 views
0

我想改变物体本身就是一种价值,像更改对象值globaly

obj.var = newValue 

但环本地得到这个时候像

for item in myArray.filter(...) { 
    item.var = newValue 
} 

这仅影响本地副本中。我可以使用原始数组中的索引,如

index = myArray.index(of: item) 
myArray[index].var = newValue 

但是,这看起来很奇怪,不是很优雅,对我来说也不是很好。有没有更简单的解决方案,更容易阅读(和写),也许是所有列表/数组的一个通用解决方案?你如何处理这个共同的任务?

(我使用雨燕3.0)

+0

你的第一行代码表明你想要更新一个**特定的** var(或者可能是一个**特定的数组索引** var,但是你的下一个代码片段(for ..in循环)表示你希望更新**所有数组**变量,这是什么?如果是后者,考虑使用**作为你的循环定义中的0 .. dfd

+0

循环是一个例子,我想改变对象的值,而不是在“item”中的本地版本,但也在myArray中(additionaly)。所以当我在myArray上再次运行一个循环时,更新后的值在那里。也可能发生在已过滤的子集中,因此在循环内使用的索引与全局数组所需的索引不同(myArray) –

+0

显示'obj'声明以查明它是什么(class,struct ...)。 – shallowThought

回答

2

我觉得你的变种是值类型不是一类。所以,如果你让它成为一个班级。这会做你想做的事