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

Posted

技术标签:

【中文标题】使用 Swift 开发应用程序 - 第 13 课 - 练习:“isBelow13”【英文标题】:App Development with Swift - Lesson 13 - Exercise: "isBelow13" 【发布时间】:2016-11-11 21:23:23 【问题描述】:

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

干杯!

【问题讨论】:

如果你无法弄清楚为什么你的代码不能按预期工作:把它放到一个编译项​​目而不是一个 Playground,然后使用 调试器。 设置断点、单步、检查变量。 学习发现错误。 【参考方案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

这样,您将创建一个可以重新分配“var”而不是“let”的变量,然后根据 if 语句条件更改该变量的值。然后,您将返回更改后的值。有意义吗?

上述相同代码的更简洁版本如下所示:(来自 cmets 中的@MartinR)

func isBelow13(number: Int) -> Bool 
    return number < 13

表达式 number &lt; 13 返回一个布尔值,因此您可以从函数中返回该表达式的结果。

【讨论】:

您不必预先分配值,let isBelow: Bool 在这里就足够了。 – 或者只是return number &lt; 13 @MartinR 非常真实!做同一件事的方法有很多,我只是想让它尽可能接近原始代码,以免对 OP 造成混淆。

以上是关于使用 Swift 开发应用程序 - 第 13 课 - 练习:“isBelow13”的主要内容,如果未能解决你的问题,请参考以下文章

Swift小白的第二课-第一个项目

第13课 《科普文》

swift 第7课堆栈和队列

swift 第6课排序

好课资源共享:13移动Web App开发之实战美团外卖

《英雄编程体验课》第 13 课 | 双指针