Swift:守卫 let 与 if let

标签 swift swift2 option-type conventions control-flow

我一直在阅读有关 Swift 中的 Optionals 的文章,并且我看到了一些示例,其中 if let 用于检查 Optional 是否包含一个值,如果它包含 - 对未包装的值执行一些操作.

但是,我看到在 Swift 2.0 中主要使用关键字 guard let。我想知道 if let 是否已从 Swift 2.0 中删除,或者它是否仍然可以使用。

我应该将包含 if let 的程序更改为 guard let 吗?

最佳答案

if letguard let 具有相似但不同的目的。

guard 的“else”情况必须退出当前作用域。通常这意味着它必须调用 return 或中止程序。 guard 用于提供提前返回,而不需要嵌套函数的其余部分。

if let 嵌套了它的范围,并且不需要任何特殊的东西。它可以返回或不返回。

一般来说,如果 if-let block 将成为函数的其余部分,或者它的 else 子句将有一个 return 或中止,那么您应该改用 guard。这通常意味着(至少根据我的经验),当有疑问时,guard 通常是更好的答案。但是在很多情况下 if let 仍然是合适的。

关于Swift:守卫 let 与 if let,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32256834/

相关文章:

swift - WatchKit:仅更改一个界面 Controller 标题颜色

我们可以直接从 Swift 使用基于 C 结构的 API 吗?

generics - Swift 2.0 版本的 struct GeneratorOf<T>

ios - 在 NavigationController 中移动 UIView 不起作用

c# - 也许是类和可选参数

swift - 如何仅以编程方式将控件添加到 tableview 单元格一次

swift - 在 NSSliderCell 中使用 display() 更新drawRect?

ios - 使用 CollectionViewController 创建 Collection View 我缺少什么?

ios - 无法快速分配值类型不匹配

Swift AnyObject 转换