和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 }

[绍棠_Swift] Swift3.0中guard语句的使用和理解相关推荐

  1. [绍棠_Swift] swift4.0 NSMutableAttributeString的Range和NSRange问题

    Range是无法通过 as? 强制转换到NSRange的. 强制转换会crash Thread 1: EXC_BREAKPOINT (code=1, subcode=0x1000b4488) var ...

  2. Swift3.0中如何完成不同View Controller之间的切换

    在网上看过一些关于View Controller之间的切换的介绍,但是由于我使用的是swift3.0,所以在一些语法上面有写不同,但是思路还是一样的.下面是我整理的一些关于swift3.0中View ...

  3. swift3.0中@escaping 和 @noescape 的含义

    第一次翻译,嘿嘿 What Do @escaping and @noescape Mean In Swift 3 开始用swift语言是很容易的,而且它确实是一门很吸引人的语言.但是随着你频繁的使用, ...

  4. [绍棠_Swift] SwiftyJSON的使用详解(附样例,用于JSON数据处理)

    1,SwiftyJSON介绍与配置 SwiftyJSON是个使用Swift语言编写的开源库,可以让我们很方便地处理JSON数据(解析数据.生成数据). GitHub地址:https://github. ...

  5. [绍棠_Swift] Swift中类和结构体的区别

    类和结构体有许多相同之处,也有许多不同之处. 二者区别如下: 1,类可以继承,结构体不可以 2,可以让一个类的实例来反初始化,释放存储空间,结构体做不到 3,类的对象是引用类型,而结构体是值类型.所以 ...

  6. Swift3.0带来的变化汇总

    var string = "Hello-Swift" //获取某个下标后一个下标对应的字符 char="e" //swift2.2 //var char = s ...

  7. swift3.0调用相册

    swift3.0调用相册首先需要注意: 1.swift3.0中调用相机和相册会导致崩溃 1.需要在info.plist文件中加入两个键值对,如下: /// 都是String类型,内容任意的字符串即可 ...

  8. Swift3.0通过闭包回调传递参数 / @escaping

    //加载请求数据 func loadData(completion: @escaping (_ result:[String]) -> ()) -> () {DispatchQueue.g ...

  9. Swift中 !和 ?的区别及使用与Swift的Guard语句

    1.swift中的!和?到底是什么? ?和!其实分别是swift语言中的一种可选类型(Optional)操作的语法糖. 1.1可选类型是个什么东西? swift中可以声明一个没有初始值的属性,swif ...

最新文章

  1. 5107LiveChatCode
  2. IET Cyber-Systems Robotics线上研讨会:聚焦人工智能与机器人前沿
  3. 录音文件下载_苹果手机录音常见问题解答
  4. 《Python入门到精通》运算符
  5. 图片加载框架之Fresco
  6. 微信小程序获取地理位置源码
  7. ADMM算法求解一个简单的例子
  8. 为什么谐振时电抗为0_变频谐振耐压试验装置在进行电缆耐压试验原理
  9. 【Autoware自动驾驶-开源项目实践】大家快来入门体验啦
  10. php毕设周记_平面设计毕业设计周记
  11. java web编程从入门到实践 pdf_《Java Web编程从入门到实践》读书笔记(一)
  12. 什么是云主机?有什么用途?
  13. python的拼音_Python返回汉字的汉语拼音(原创) | 学步园
  14. Python得到前面12个月的数据
  15. win10去掉快捷方式小箭头_Win10系统去除桌面快捷方式小箭头图标的三种方法
  16. 统计学名词解释 —— 5.「样本均值」、「样本方差」与「样本中心矩」
  17. 进行日常记账,查看某时间段的账目
  18. 北京理工大学python慕课第三周考试_北京理工大学python慕课答案
  19. 29条看了想哭的QQ签名
  20. 计算机飞行计划TRO,【计算机飞行计划说明】CFP

热门文章

  1. 社会各界对996的态度
  2. 02 线程简介 多任务 多线程 普通方法调用和多线程 程序.进程.线程 Proces与Thread 核心概念
  3. tripwire--入侵检测系统
  4. 山东大学RISCV公共开放平台
  5. 秘密实验室_秘密实验室:可以放弃您的项目
  6. 苹果HEIC图片转换器heic转JPG格式批量无损转换转照片格式软件 - 使用教程
  7. 云服务器cvm 云服务器ecs区别
  8. linux 虚拟主机名称,linux – Apache中基于名称的虚拟主机
  9. 菜鸟----字符菱形代码
  10. 小丑机器人乐高_5岁试听课程——《小丑机器人》教案