请帮我找到最好的实现。给定:具有结构的数组。您需要对特定结构进行更改。
实现非常笨拙,我确信有一些我不知道的东西和一个更优雅的选择
import Foundation
struct Person {
var id: Int
var name: String
}
var contacts: [Person] = [
Person(id: 1, name: "Alex"),
Person(id: 2, name: "Stiv"),
Person(id: 3, name: "Joy")
]
func renamePerson(id: Int, name: String, array: [Person]) -> [Person] {
var result: [Person] = []
for i in array {
if i.id == id {
result.append(Person(id: i.id, name: name))
} else {
result.append(i)
}
}
return result
}
contacts = renamePerson(id: 1, name: "Sasha", array: contacts)
您可以将类型更改为
Person
,class
以便您可以修改数组对象,并像这样重写代码。如果struct
需要保存类型,那么在我看来,您在这种情况下的选择是唯一可能的选择。添加
struct
如果你制作一个数组,你可以保存类型inout
。那么这个选项是可能的在 Swift 5/Xcode 11.5 中,您可以使用该函数来解决您的问题
map
: