使用 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 < 13
返回一个布尔值,因此您可以从函数中返回该表达式的结果。
【讨论】:
您不必预先分配值,let isBelow: Bool
在这里就足够了。 – 或者只是return number < 13
。
@MartinR 非常真实!做同一件事的方法有很多,我只是想让它尽可能接近原始代码,以免对 OP 造成混淆。以上是关于使用 Swift 开发应用程序 - 第 13 课 - 练习:“isBelow13”的主要内容,如果未能解决你的问题,请参考以下文章