我对Swift很新,我通过使用“应用程序开发与Swift”-Book来学习。
你可以检查下面的代码 - 它不起作用,我无法弄清楚为什么。
import UIKit
func isBelow13(number: Int) -> Bool {
let isBelow: Bool = false
if number < 13 {
let isBelow = true
} else {
let isBelow = false
}
return isBelow
}
isBelow13(number: 11) // returns false, should return true
isBelow13(number: 14) // returns false
Cheerio!
答案 0 :(得分:1)
您首先将isBelow定义为false,然后在if语句中定义一个名为isBelow的新常量。这个新常量与上面的常量同名,但实际上完全不同。如果你在if语句之外,你在if语句中创建的语句不再存在,它只返回你最初创建的语句。你实际上并没有真正改变你最初设置的第一个isBelow。
您实际上要做的事情可以像这样完成:
func isBelow13(number: Int) -> Bool {
var isBelow: Bool = false
if number < 13 {
isBelow = true
} else {
isBelow = false
}
return isBelow
}
isBelow13(number: 11) // returns true
isBelow13(number: 14) // returns false
这样你就可以创建一个可以重新分配的变量&#34; var&#34;而不是&#34;让&#34;然后您将根据if语句条件更改该变量的值。然后,您将返回更改后的值。有意义吗?
上述相同代码的更简洁版本如下所示:(来自评论中的@MartinR)
func isBelow13(number: Int) -> Bool {
return number < 13
}
表达式number < 13
返回一个布尔值,因此您只需从函数中返回该表达式的结果。