swift控制流

来源:互联网 发布:双头龟一只多少钱淘宝 编辑:程序博客网 时间:2024/05/21 10:35

1>for循环

Swift 提供两种for循环形式来按照指定的次数执行一系列语句:


第一是 for-in循环对一个集合里面的每个元素执行一系列语句。

第二是 for 循环,用来重复执行一系列语句直到达成特定条件达成,一般通过在每次循环完成后增加计数器的值来实现。

for initialization; condition; increment {    

                statements

     }

和 C 语言中一样,分号将循环的定义分为 3 个部分,不同的是,Swift 不需要使用圆括号将“initialization; condition; increment”包括起来。

这个循环执行流程如下:

循环首次启动时,初始化表达式( initialization expression )被调用一次,用来初始化循环所需的所有常量和变量。

条件表达式(condition expression)被调用,如果表达式调用结果为false,循环结束,继续执行for循环关闭大括号(})之后的代码。如果表达式调用结果为true,则会执行大括号内部的代码。

执行所有语句之后,执行递增表达式(increment expression)。通常会增加或减少计数器的值,或者根据语句输出来修改某一个初始化的变量。当递增表达式运行完成后,重复执行第 2 步,条件表达式会再次执行。

2>while循环

while循环运行一系列语句直到条件变成false。这类循环适合使用在第一次迭代前迭代次数未知的情况下。Swift 提供两种while循环形式:

while循环,每次在循环开始时计算条件是否符合;

下面是一般情况下while循环格式:

while   condition {      

    message

 }

repeat-while循环,每次在循环结束时计算条件是否符合。

下面是一般情况下repeat-while循环的格式:

 repeat {    

      message

} while condition

3>条件语句

Swift 提供两种类型的条件语句:if语句和switch语句。通常,当条件较为简单且可能的情况很少时,使用if语句。

if语句最简单的形式就是只包含一个条件,当且仅当该条件为true时,才执行相关代码:

let a = 1

if a > 2{

print("a是大于2的")


switch语句更适用于条件较复杂、可能情况较多且需要用到模式匹配的情境。在 Swift 中,当匹配的 case 分支中的代码执行完毕后,程序会终止switch语句,而不会继续执行下一个 case 分支.每一个 case 分支都必须包含至少一条语句.(case 分支的模式也可以是一个值的区间)


上面那么写是无效的,因为第一个case语句分支是空的


4>值绑定

case 分支的模式允许将匹配的值绑定到一个临时的常量或变量,这些常量或变量在该 case 分支里就可以被引用了——这种行为被称为值绑定(value binding)。

5>控制转移语句

控制转移语句改变你代码的执行顺序,通过它你可以实现代码的跳转。Swift 有五种控制转移语句:

continue, break, fallthrough, return, throw

Continue

continue语句告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。就好像在说“本次循环迭代我已经执行完了”,但是并不会离开整个循环体。

Break

break语句会立刻结束整个控制流的执行。当你想要更早的结束一个switch代码块或者一个循环体时,你都可以使用break语句。这种特性可以被用来匹配或者忽略一个或多个分支。因为 Swift 的switch需要包含所有的分支而且不允许有为空的分支,有时为了使你的意图更明显,需要特意匹配或者忽略某个分支。那么当你想忽略某个分支时,可以在该分支内写上break语句。当那个分支被匹配到时,分支内的break语句立即结束switch代码块。

6>检测 API 可用性

我们使用一个可用性条件在一个if或guard语句中去有条件的执行一段代码,这取决于我们想要使用的 API 是否在运行时是可用的。编译器使用从可用性条件语句中获取的信息去验证在代码块中调用的 API 是否都可用。


以上可用性条件指定了在 iOS 系统上,if段的代码仅会在 iOS 9 及更高版本的系统上执行;在 OS X,仅会在 OS X v10.10 及更高版本的系统上执行。最后一个参数,*,是必须写的,用于处理未来潜在的平台。


文/单腿行走的大象(简书作者)
原文链接:http://www.jianshu.com/p/f99edb80f25b
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
0 0