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语句的代码块将会运行。
