不工作,我承认有点感觉愚蠢,但试图小时后我要问:阵列搜索功能斯威夫特
class AGE {
static func getAge() -> Int {
var age: Int
for items in dataArray {
if items.name == "Steven" {
age = items.age
}
else {
age = 0
}
}
// variable "age" used before being initialized - WHY?
return age
}
}
我甚至尝试在一开始设定var age: Int = 0
,但随后的功能return 0
。我希望有人能够在这一点上原谅我这个基本问题。任何帮助赞赏。
为了更清楚dataArray中的样子:
struct Person {
let name: String
let lastName: String
let age: Int
}
let person1: Person = Person(name: "Steven", lastName: "miller", age: 23)
let person2: Person = Person(name: "jana", lastName: "drexler", age: 31)
let person3: Person = Person(name: "hanna", lastName: "montana", age: 56)
var dataArray = [Person]()
dataArray.append(person1)
dataArray.append(person2)
dataArray.append(person3)
更新
试图组装所有答案的本质,解决方案必须是这样的: 类AGE {
static func getAge() ->Int {
var age: Int = 0
for items in dataArray {
while items.firstName == "Steven" {
age = items.age
return age
break // This break will never be executed because of return.
}
break // setting the break here, the loop will break after first round
}
return age
}
}
此代码工作,(与第二次休息),但只适用于第一个循环。剩下的问题是,在循环达到目标后如何设置返回和中断。返回或中断将阻止另一个步骤。
什么是'dataArray'? – paper1111
根据您的确切用例,您可能需要考虑在'dataArray'为空的情况下使'age'可选,返回'nil'。正如在这种情况下,答案是“年龄是多少?”可能不是“刚创建”,而是“没有年龄”。 – Hamish
现在我添加了dataArray。 –