Swift 按数组中的名称访问属性
如果我有以下设置:Swift 按数组中的名称访问属性,swift,Swift,如果我有以下设置: struct Job { let jobDescription: String let days: [String] let hourlyPay: Double } var jobArray = [ Job(jobDescription: "Dog Walker", days: ["Monday", "Wednesday", "Friday"], hourlyPay: 7), Job(jobDescription: "Babysit
struct Job {
let jobDescription: String
let days: [String]
let hourlyPay: Double
}
var jobArray = [
Job(jobDescription: "Dog Walker", days: ["Monday", "Wednesday", "Friday"], hourlyPay: 7),
Job(jobDescription: "Babysitter", days: ["Tuesday", "Wednesday"], hourlyPay: 15),
// etc
]
或者只是一个数组(不带结构):
如果我知道工作描述,是否有任何方法可以让我引用与之相关的其他属性,而不必通过循环测试每个工作描述以查看其是否匹配
因此,不是:
for (name, days, salary) in jobArray {
if name == "Babysitter" {
print(salary)
}
}
我从一开始就知道我想要哪个名字,并且可以在没有循环的情况下引用它的薪水。如果你可以使用
数组,我假设你也可以使用字典
var jobs = [
"Dog Walker" : (["Monday", "Wednesday", "Friday"], 7),
"Babysitter" : (["Tuesday", "Wednesday"], 15),
"Leaves Raker" : (["Sunday", ""], 10)
]
if let (days, rate) = jobs["Babysitter"] {
println("Babysitter hourly rate \(rate) on \(days)")
}
它在[星期二、星期三]打印每小时15美元的保姆工资
如果您对Swift 2也感兴趣,可以将代码转换为如下内容:
var jobs = [
"Dog Walker" : (["Monday", "Wednesday", "Friday"], 7),
"Babysitter" : (["Tuesday", "Wednesday"], 15),
"Leaves Raker" : (["Sunday", ""], 10)
]
func printJobDescription(job: String) {
guard let (days, rate) = jobs[job] else {
return
}
print("\(job) hourly rate \(rate) on \(days)")
}
printJobDescription("Babysitter")
var jobs = [
"Dog Walker" : (["Monday", "Wednesday", "Friday"], 7),
"Babysitter" : (["Tuesday", "Wednesday"], 15),
"Leaves Raker" : (["Sunday", ""], 10)
]
func printJobDescription(job: String) {
guard let (days, rate) = jobs[job] else {
return
}
print("\(job) hourly rate \(rate) on \(days)")
}
printJobDescription("Babysitter")