Swift复习系列:带标签的控制语句、提前退出以及检测API可用

2017-09-07  本文已影响32人  ZYiDa
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语句的代码块将会运行。

上一篇 下一篇

猜你喜欢

热点阅读