Swift If else 语句未按预期工作
Swift If else statement not working as intended
我尝试为类似于 high/low 游戏的游戏制作 if else 语句。当您单击该按钮时,该语句似乎跳过了 if NewNumber <= oldNumber
部分,直接进入了其他部分。它应该将新整数与旧整数进行比较,看看它是更高还是更低。
只做了 swift 一段时间所以我不确定我做错了什么
//Lower Button
@IBAction func lowerButton(sender: AnyObject) {
var newNumber = randomIntBetween(2, high: 26)
var oldNumber: Int?
func lowerNumber() -> Int {
if newNumber <= oldNumber {
correctWrongLabel.text = "You Were Correct!"
scoreLabel.text = "Score: \(countWin++)"
} else {
correctWrongLabel.text = "You Were Wrong!"
scoreLabel.text = "Score: \(countLose)"
}
return newNumber
}
let newValue = lowerNumber()
randomIntLabel.text = "\(newValue)"
}
您正在将 Int
值与类型为 Int?
的 nil
值进行比较
var newNumber = 10
var oldNumber: Int?
if newNumber <= oldNumber {
print("<=")
} else {
print("Not <=")
}
结果
Not <=
在 Swift 中 Int
不是 <=
而是 nil
,这就是执行 else 分支的原因。
建议
lowerNumber
是一个很奇怪的方法:
- 它不需要参数
- 它returns最小值
- 它还执行一些操作
我建议你改成这样
func updateUI(old: Int, new: Int) {
if new <= old {
correctWrongLabel.text = "You Were Correct!"
scoreLabel.text = "Score: \(countWin++)"
} else {
correctWrongLabel.text = "You Were Wrong!"
scoreLabel.text = "Score: \(countLose)"
}
}
然后当在你的代码中你需要得到你的 2 个值之间的最小值时,只需使用 min
if let oldNumer = oldNumber {
let minimum = min(newNumber, oldNumber)
}
我尝试为类似于 high/low 游戏的游戏制作 if else 语句。当您单击该按钮时,该语句似乎跳过了 if NewNumber <= oldNumber
部分,直接进入了其他部分。它应该将新整数与旧整数进行比较,看看它是更高还是更低。
只做了 swift 一段时间所以我不确定我做错了什么
//Lower Button
@IBAction func lowerButton(sender: AnyObject) {
var newNumber = randomIntBetween(2, high: 26)
var oldNumber: Int?
func lowerNumber() -> Int {
if newNumber <= oldNumber {
correctWrongLabel.text = "You Were Correct!"
scoreLabel.text = "Score: \(countWin++)"
} else {
correctWrongLabel.text = "You Were Wrong!"
scoreLabel.text = "Score: \(countLose)"
}
return newNumber
}
let newValue = lowerNumber()
randomIntLabel.text = "\(newValue)"
}
您正在将 Int
值与类型为 Int?
nil
值进行比较
var newNumber = 10
var oldNumber: Int?
if newNumber <= oldNumber {
print("<=")
} else {
print("Not <=")
}
结果
Not <=
在 Swift 中 Int
不是 <=
而是 nil
,这就是执行 else 分支的原因。
建议
lowerNumber
是一个很奇怪的方法:
- 它不需要参数
- 它returns最小值
- 它还执行一些操作
我建议你改成这样
func updateUI(old: Int, new: Int) {
if new <= old {
correctWrongLabel.text = "You Were Correct!"
scoreLabel.text = "Score: \(countWin++)"
} else {
correctWrongLabel.text = "You Were Wrong!"
scoreLabel.text = "Score: \(countLose)"
}
}
然后当在你的代码中你需要得到你的 2 个值之间的最小值时,只需使用 min
if let oldNumer = oldNumber {
let minimum = min(newNumber, oldNumber)
}