在Swift语法里where关键字的作用跟SQL的where一样, 即附加条件判断。
1、 在集合遍历时使用where, 条件为真时执行代码块, 为假时不执行代码块。
case let x where x > 3:
2、for value in array where value > 2
变量定义中直接_,其实也是定义一个变量,只是后面不想要,偷懒的一种写法
使用guard语句将上述的3个问题一并解决:
- 是对你所期望的条件做检查,而非不符合你期望的。又是和assert很相似。如果条件不符合,guard的else语句就运行,从而退出这个函数。
- 如果通过了条件判断,可选类型的变量在guard语句被调用的范围内会被自动的拆包 - 这个例子中该范围是fooGuard函数内部。这是一个很重要,却有点奇怪的特性,但让guard语句十分实用。
- 对你所不期望的情况早做检查,使得你写的函数更易读,更易维护。
func fooGuard(x: Int?)
{
guard let x = x where x >
0
else {
// 变量不符合条件判断时,执行下面代码
return
}
// 使用xx.description
}
func fooNonOptionalGood(x: Int) {
guard x > 0 else {
return
}
//使用x
}