【发布时间】:2019-06-12 06:08:01
【问题描述】:
我正在制作一个应用程序,用户将在该应用程序中接受有关州首府的测验。首都和州会呈现给用户一个 UIImage,我让一切正常工作。为了减少代码,我试图弄清楚如何避免所有这些“if 语句”。下面的“if 语句”仅代表四个州和首府城市。再想象这些行四十六次。这似乎有点多,对吧?我在研究算法时遇到过三元运算符,并试图用它们来减少这段代码,但我没有成功。我有两个 UIImage 数组 - 一个包含城市,另一个包含州。我的应用程序识别用户答案是否正确的方式是匹配相应的数组索引。
这是我的缩写数组...
let capitalCityList: [UIImage] = [
UIImage(named: "Montgomery")!,
UIImage(named: "Juneau")!,
UIImage(named: "Phoenix")!,
UIImage(named: "Little Rock")!
let stateWordList: [UIImage] = [
UIImage(named: "Alabama")!,
UIImage(named: "Alaska")!,
UIImage(named: "Arizona")!,
UIImage(named: "Arkansas")!
这是前四个“if 语句”...
if capitalCity.image == capitalCityList[0] && stateWord.image == stateWordList[0] {
scoreInt += 1
scoreLabel.text = String("Score: \(scoreInt)")
} else if capitalCity.image == capitalCityList[1] && stateWord.image == stateWordList[1] {
scoreInt += 1
scoreLabel.text = String("Score: \(scoreInt)")
} else if capitalCity.image == capitalCityList[2] && stateWord.image == stateWordList[2] {
scoreInt += 1
scoreLabel.text = String("Score: \(scoreInt)")
} else if capitalCity.image == capitalCityList[3] && stateWord.image == stateWordList[3] {
scoreInt += 1
scoreLabel.text = String("Score: \(scoreInt)")
} else if capitalCityWord.image == capitalCityList[4] && stateWord.image == stateWordList[4] {
scoreInt += 1
scoreLabel.text = String("Score: \(scoreInt)")
【问题讨论】:
-
swift for loop: for index, element in array? 的可能副本 - 我认为 third example in this answer 最接近您想要的。
-
Ken Y-N ... 是否可以一次循环遍历两个枚举数组并比较索引?
-
不,但是你有索引,所以你可以用它来查找第二个数组。
-
@KenY-N 有更好的解决方案。例如在这种情况下的字典。你可以看看我的回答
标签: swift if-statement ternary-operator