应用程序开发与Swift - 第13课 - 练习:“isBelow13”

时间:2016-11-11 21:23:23

标签: swift3 swift-playground


我对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!

1 个答案:

答案 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返回一个布尔值,因此您只需从函数中返回该表达式的结果。