[绍棠_Swift] Swift3.0中guard语句的使用和理解
2017-08-03 17:30
169 查看
和if一样,guard是基于一个表达式的布尔值去判断某些代码是否该被执行,和if不一样的地方是,guard只有在条件不满足(布尔值==false时)才会执行,类似反if。通过伪代码来直观的感受一下
首先由一个可选类型,然后判断x是否存在并且大于0,当条件成立执行一些代码
第一种 oc写法
var x:int?
if x == nil | x < 0 {
return
}
//do x
print(\(x))
典型的OC写法,没有很大的问题,但是会让你的代码看上去难以理解
第二种 Swift 写法
if let _ = x where x > 0 {
//do x
}
//不符合do
用了swift中的可选绑定让代码的更容易被理解,但是所有要执行的代码放在了条件判断当中,如果多几个这样的判断,会让你的代码有很多层的嵌套,同样会导致很难读懂
第三种 guard
guard let _ = x where x > 0 else { return //不符合 }
//do x 符合
对比以上2中,很容易发现guard让你的代码看上去简单易懂,而且不会有很多的嵌套出现,当然guard对于非可选类型也是可以用的如:
guard x > 0 else {return }
首先由一个可选类型,然后判断x是否存在并且大于0,当条件成立执行一些代码
第一种 oc写法
var x:int?
if x == nil | x < 0 {
return
}
//do x
print(\(x))
典型的OC写法,没有很大的问题,但是会让你的代码看上去难以理解
第二种 Swift 写法
if let _ = x where x > 0 {
//do x
}
//不符合do
用了swift中的可选绑定让代码的更容易被理解,但是所有要执行的代码放在了条件判断当中,如果多几个这样的判断,会让你的代码有很多层的嵌套,同样会导致很难读懂
第三种 guard
guard let _ = x where x > 0 else { return //不符合 }
//do x 符合
对比以上2中,很容易发现guard让你的代码看上去简单易懂,而且不会有很多的嵌套出现,当然guard对于非可选类型也是可以用的如:
guard x > 0 else {return }
相关文章推荐
- swift学习笔记--swift3.0 if-let、guard语句中的where的替换
- [绍棠_Swift] Swift3.0中代理的使用方法
- swift: if和guard以及携带let语句的使用说明
- [绍棠_Swift] Swift3.0中使用CocoaPods导入的第三方库
- Swift的Guard语句
- 选择 | 循环 | 语句(if,if……else,switch,while,for)的理解和使用
- Swift - swift3.0中代理方法的使用
- Swift 如何理解 guard
- Swift3.0 / swift2.3中dispatch_group的使用
- swift的Guard语句
- Swift 中 ? ! 使用与理解
- [绍棠_swift] Swift中assert(断言)的使用
- [绍棠_Swift] SwiftyJSON的使用详解(附样例,用于JSON数据处理)
- Swift中使用do-catch语句进行异常处理
- [绍棠_Swift] Swift3.0中Get、Post的同步与异步请求
- QL语句通常不是很容易理解,特别是你阅读别人已经写好的语句。因此,很多人指出我们应该遵循在其他语言中遵循的原则,像加上注释和功能模块化。我最新注意到一个很多人都没有使用的Postgres关键特性,也就
- Swift 中的开关语句switch在swift中的使用
- [iOS Swift3.0 ]Guard语句理解 [转载]
- Swift guard使用
- Swift 语法糖 if let 和 guard 的使用