gpt4 book ai didi

swift - 在变量 swift 中创建对象/实例

转载 作者:行者123 更新时间:2023-11-28 06:12:55 24 4
gpt4 key购买 nike

我不知道如何在创建实例或在 Swift 中处理它们时使用变量:例如,我如何在循环中执行以下操作(创建实例):

class Guest {
let name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}

let guests = [["ann", 1] , ["bob", 2] ...]

这样循环等于:

let ann = Guest(name: "ann" , age: 1)
let bob = Guest(name: "bob" , age: 2)
...

编辑:我正在寻找这样的东西:

for i in guests {
let i[0] = Guest(name: i[0] , age: i[1])

地址示例:

print(guests[0].age)
>>>1

我进行了很多搜索,但被引导到有关在类中创建变量的问题。

非常感谢!

最佳答案

您可以使用经典循环来做到这一点:

let input = [("Ann", 1), ("Bob", 2)]

var guests: [Guest] = []
for each in input {
guests.append(Guest(name: each.0, age: each.1))
}

但是,可以使用函数式技术更简洁地完成(并避免 var):

let guests = [("Ann", 1), ("Bob", 2)].map { Guest(name: $0.0, age: $0.1) }

编辑:基于字典的解决方案(Swift 4;对于 Swift 3 版本,只需使用经典循环)

let input = [("Ann", 1), ("Bob", 2)]
let guests = Dictionary(uniqueKeysWithValues: input.map {
($0.0, Guest(name: $0.0, age: $0.1))
})

或者,如果两位客人有可能同名:

let guests = Dictionary(input.map { ($0.0, Guest(name: $0.0, age: $0.1)) }) { first, second in
// put code here to choose which of two conflicting guests to return
return first
}

有了字典,你就可以做到:

if let annsAge = guests["Ann"]?.age {
// do something with the value
}

关于swift - 在变量 swift 中创建对象/实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45989491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com