Ziank的技术博客

Swift中guard语句的作用

在2.0版本中,swift引入了新的关键字guard,用于进行条件判断。但是大家知道if完全可以完成guard所拥有的功能,那么为什么还要有guard语句呢?

我们先看看guard语句的用法:

1
2
3
4
func fooBinding(x: Int?) {
guard let x = x where x > 0 else { return; }
// do something else
}

可以看到guard语句的作用就是判断一个表达式是否为True,然后进行处理。
如果不使用swift的话,这句话的表达应该是

1
2
3
4
func fooBinding(x: Int?) {
if (x == nil || x < 0) { return; }
// do something else
}

可以看到我们需要判断和想要的结果刚好相反的情况,然后才可以正确执行。使用了swift的语法后,会变成

1
2
3
4
5
func fooBinding(x: Int?) {
if (let x = x where x > 0) {
// do something else
}
}

我们可以直接判断想要的结果,但是我们需要把执行的语句都放在代码块内,多了一层嵌套关系。
而使用guard以后,就不存在这些问题了,既可以直接判断想要的结果,也不会多出一层嵌套关系。