Swift-guard & defer

原创 2016年05月31日 17:55:04

Swift-guard & defer

参考文档:http://nshipster.cn/guard-and-defer/

guard

  • guard 是一个新的条件声明,表示如果条件不满足时退出当前 block。任何被声明成 guard 的 optional 绑定在其他函数或 block 中都是可用的,并强制在 else 中用 return 来退出函数、continue 或 break 退出循环,或者用一个类似 fatalError() 的 @noreturn 函数来退出,以离开当前的上下文:
for imageName in imageNamesList {
    guard let image = UIImage(named: imageName) 
        else { continue }
    // do something with image
}

defer(推迟)

  • defer的block,总是在当前方法执行后才会执行,一般会在block里面写释放资源代码。
  • 它会颠倒程序执行顺序,应该慎用!避免造成混淆和晦涩,减小代码的可读性!
postfix func ++(inout x: Int) -> Int {
    defer { x += 1 }
    return x
}
版权声明:本文为原创文章,未经博主允许不得转载,有问题欢迎讨论。

相关文章推荐

swift Defer语法

//defer 语句 /* 延缓推迟,相当于把操作放入栈中,后加入的先执行 */ /* 分析代码: 定位到目录并打开指定文件夹,倘若打开文件夹失败则结束函数。 主要到defe...

Swift多defer的执行顺序及特殊情况

如果在一个代码域中包含多个defer块,它们将按相反顺序执行;你可以把它们想象成一个栈。乍一看defer以相反顺序执行感觉很奇怪,但不管怎样,如果我们看一个实际的例子,就会觉得有道理:guard le...
  • mydo
  • mydo
  • 2017年06月02日 15:48
  • 717

guard & defer

「我们应该(聪明的程序员明白自己的局限性)尽力……让文本里的程序(program)和时间轴上的进程(process)的对应尽量简单。」 —Edsger W. Dijkstra, 《Go To 有害论》...

Swift 关键词guard(监视)

如果您和我一样,让代码尽早跳出以便更好地进行逻辑、数据内容的确认,虽然 Swift 自发布的第一天起就让代码提早跳出变得可能,但是它仍然还有一些需要注意的地方。首先,您需要检查不需要的条件(比如说变量...

Swift 2.3 【这些情况下guard要慎用】

guard 语法的可读性更强。 它可以让我们的方法表意更加明确,更易于阅读,它能够表达“提前退出”的意图,提高了程序的健壮性。 换句话来理解这是 Swift 的设计者在暗示程序员在编写代码时时提早 r...

Swift语法之 guard

Swift2.0 除了一个新的关键字guard,这个关键字有什么用呢? 经过我查询文档之后,和反复琢磨之后,发现这个guard语法有点奇葩,所以在此想介绍一下guard语法在什么地方可以用到.与if语...

swift Guard语法

//swift guard语句 /* 与if语句相同的是,guard也是基于一个表达式的布尔值去判断一段代码是否该被执行。与if语句不同的是,guard只有在条件不满足的时候才会执行这段代码。你可...

3.Swift的Guard语句

Swift的Guard语句 字数1271 阅读908 评论1 喜欢5 本篇文章翻译自: http://ericcerney.com/swift-guard-statement/ 原作者:ecer...

Swift学习记录 -- 3. 逻辑分支语句(if , else if ,三目运算 ,guard)

Swift 中 if , else if ,三目运算相较OC来说 , 除了更加精简 , 几乎没有变化 . 只是Swift中新增了 guard判断 , Switch得到大力加强. Switch留到下篇文...
  • coderMy
  • coderMy
  • 2016年10月02日 11:29
  • 165

Swift学习笔记(一):guard 和 if 的用法及区别

一、guard是什么?guard是 swift 2.0推出的新的判断语句的用法。guard语句和if语句类似,都是根据关键字之后的表达式的布尔值决定下一步执行什么。和if语句不同的是,guard语句只...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Swift-guard & defer
举报原因:
原因补充:

(最多只允许输入30个字)