1.带标签的控制语句
我们可以使用标签(
statement label
)来标记一个循环体或者条件语句,对于一个条件语 句,可以使break
加标签的方式,来结束这个被标记的语句。对于一个循环语句,你可以使用break
或者continue
加标签,来结束或者继续这条被标记语句的执行。
如下例子
//带标签的控制语句
var i = 0
testName:while i < 188
{
print(i)
if i == 100
{
sleep(UInt32(3))
break testName
}
i += 1;
}
2.提前退出
1.像
if
语句一样,guard
的执行取决于一个表达式的布尔值。我们可以使用guard
语句来要求条件必须为真 时,以执行guard
语句后的代码。不同于if
语句,一个guard
语句总是有一个else
从句,如果条件不为真则执行else
从句中的代码。
一般为下面的类型
2.guard
(为真或者为假的条件
)else {}
请看接下来的例子
func greet(person: [String: String])
{
guard let name = person["name"] else
{
return
}
print("Hello \(name)")
guard let location = person["location"] else
{
print("I hope the weather is nice near you.")
return
}
print("I hope the weather is nice in \(location).")
}
greet(["name": "John"])
说明:
如果
guard
语句的条件被满足,则继续执行guard
语句大括号后的代码。将变量或者常量的可选绑定作为 语句的条件,都可以保护guard
语句后面的代码。
如果条件不被满足,在else
分支上的代码就会被执行。这个分支必须转移控制以退出guard
语句出现的代码 段。它可以用控制转移语句如return
,break
,continue
或者throw
做这件事,或者调用一个不返回的方法或函 数,例如fatalError()
。
相比于可以实现同样功能的if
语句,按需使用guard
语句会提升我们代码的可读性。它可以使你的代码连贯的 被执行而不需要将它包在else
块中,它可以使你在紧邻条件判断的地方,处理违规的情况。
3.API
判断
我们可以在if
条件语句或guard
语句中通过#available(Platform..., *)
,根据API的可用性,来做不同的处理。如下,
if #available(iOS 9.0, *)
{
//使用iOS 9以及以后版本的API,或者做一些操作
}
else
{
//使用iOS 9之前版本的API,或者做一些操作
}
注意
最后一个参数
*
,是必须的,用于指定在所有其它平台中,如果版本号高于你的设 备指定的最低版本,if
语句的代码块将会运行。