在2.0版本中,swift引入了新的关键字guard,用于进行条件判断。但是大家知道if完全可以完成guard所拥有的功能,那么为什么还要有guard语句呢?
我们先看看guard语句的用法:1234func fooBinding(x: Int?) { guard let x = x where x > 0 else { return; } // do something else}
可以看到guard语句的作用就是判断一个表达式是否为True,然后进行处理。
如果不使用swift的话,这句话的表达应该是1234func fooBinding(x: Int?) { if (x == nil || x < 0) { return; } // do something else}
可以看到我们需要判断和想要的结果刚好相反的情况,然后才可以正确执行。使用了swift的语法后,会变成12345func fooBinding(x: Int?) { if (let x = x where x > 0) { // do something else }}
我们可以直接判断想要的结果,但是我们需要把执行的语句都放在代码块内,多了一层嵌套关系。
而使用guard以后,就不存在这些问题了,既可以直接判断想要的结果,也不会多出一层嵌套关系。