的数组枚举这个代码看看:通过结构
struct Person {
var name: String
var age: Int
}
var array = [Person(name: "John", age: 10), Person(name: "Apple", age: 20), Person(name: "Seed", age: 30)]
//for item in array { item.name = "error: cannot assign to property: 'item' is a 'let' constant" }
array[0].name = "Javert" //work fine.
我试图改变一个循环内一个结构的属性值。
当然,我可以将Person
更改为class
,它工作得很好。但是,我不明白为什么item
是le
。
哦,我只是想出了这个,for item in...
只是创建了一个array
内的实际对象的复制,这意味着它会自动声明为let
常量。
所以这就是为什么我不能改变它的属性值。
我的问题是,除了将Person
更改为class
之外,如何在循环内更改Person
的属性?
编辑:
感谢到@Zoff迪诺与原for index in 0..<array.count
答案。
但是,这只是一个简化的问题。
我想存档使用高阶功能与结构的数组,如:
array.each { item in ... }.map { item in ... }.sort { } ...
雅,谢谢,我忘了:D但这只是一个简化的问题。我想要归档的是使用结构数组的高阶函数,比如:'array.each {item in ...} .map {item in ...} .sort {} ...' –