Swift 关键词guard监视

如果您和我一样,让代码尽早跳出以便更好地进行逻辑、数据内容的确认,虽然 Swift 自发布的第一天起就让代码提早跳出变得可能,但是它仍然还有一些需要注意的地方。首先,您需要检查不需要的条件(比如说变量为空),而不是检查您需要的条件。更重要的是,绝大多数情况下,当变量为空的时候,您往往想要让代码跳出,然后如果变量不为空的时候就继续运行,但是接下来如果您想要在剩余的代码中使用此变量的话,就需要对变量进行手动拆包。

在 Swift 2当中,Swift 团队给我们提供了一个完美的关键词:guard 来帮助我们提早跳出代码。guard同时修复了上面提出的两个问题。试想,您正在玩一个游戏,由于开发者懒得提供不同的回调,因此所有的输入变化都在一个回调函数中进行处理:

在输入无效的时候使用二次回调似乎更加有效,但是这反而证明了 guard 的极佳用处。如果可选的input是非空值,那么表示某个按钮被按下了,那么游戏会继续进行。而如果按钮不再被按下,那么input就会为空。如果我们只关注于按钮被按下的情况,我们无需使用如下所示的 Swift 1中所使用的提早退出机制:

注意到,我们将输入和我们不想处理的情况进行了比较,这里是“输入为空”的情况。更重要的是,当前的输入值仍然还是一个可选值,因此之后在函数中的使用我们都必须要使用强制解包,即使我们已经知道它是非空值。在 Swift 2 中,就变得轻松多了:

在这里,我们“监视”着input,一旦其为非空值就将其存入到 unwrappedInput 当中,否则的话就退出方法。现在我们就能够使用非空值的 unwrappedInput 了,皆大欢喜!因此,guard 能够帮助 iOS 9 代码变得更加清晰易懂,减少错误的发生。

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...