不工作,我承認有點感覺愚蠢,但試圖小時後我要問:陣列搜索功能斯威夫特
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。 –