的數組枚舉這個代碼看看:通過結構
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 {} ...' –