安安IOSiOSiOS深度报告

Swift 十二讲 第五章 Ifelse/for/while/S

2015-02-02  本文已影响275人  zydscience

Swift的控制流和其他语言区别不大。只有switch的细节稍微多一些,更强大一些。读者应多加注意。

1. For 循环

For循环有两种写法。第一种和C基本一样(除了括号可以省去)。

语法解析的过程为:i首先被初始化为0。每一次执行循环体之前,检查是否满足条件i<2,如果是,那么执行。如果否,那么终止。每次循环体执行结束后,i 的值加1。

var str = "abc"
 
 var reverseStr = ""
 
 for ii in str {
    println(ii)
    reverseStr = String(ii) + reverseStr
    println(reverseStr)
 }
 //最后reverStr为"cba",也就是求出了string的逆序排列。

for in Loops也可以遍历字典来做循环。因为字典包含的项比较复杂,所以要特别小心检查循环条件和循环体。另外注意字典被循环的时候,遍历顺序是随机的。这是因为字典不以位置来检索,所以并不是先按第一个位置来进行这样子。

2. While循环同样有两种

while 某判断条件
{
做一些事情
}

就是当条件满足是,不停的执行循环体。每次执行完,再检查是否满足。例如:

 var i = 1
 while i<5
 {
 println(i)
    i++
 }  输出为1 2 3 4

*do while循环

do while循环先做do后面的循环体,然后判断条件是否满足。所以do while循环,至少执行一遍循环体。无论条件是否满足。

 var i = 1
 do
 {
 println(i)
    i++
 } while i < -1  //输出为1。

3. continue和break

你可以在循环体内任何地方使用continue。其作用是终止当前的循环体执行,开始下一次循环。for语句前面可以加标签。continue后面可以跟随标签,就像GoTo语句一样,直接跳到被标签的语句处。
你可以在循环体内任何地方使用break。其作用是直接去执行循环后的下一个语句。也就是完全跳出了循环。

4. if-else

if-else的最基本的写法为:

if 条件 {做些事情}
else {做些事情}

注意大括号不能省略。另外else if也是支持的。如下例:

 var i = 1
 if i == 1 {println("三年又三年");
 i = i+1 }
 else {println("大家吃鸡蛋")}
//注意虽然i后来等于2了,但是"大家吃鸡蛋不会被执行"。因为前面判断的时候i == 1

5. case switch

上面执行过程是这样的:因为i==1, 所以第一个println被执行。因为有fallthrough,所以第二个println被执行。第三个println不会被执行。

以上语句执行过程为:case后面的tuple, _表示第一个元素是什么都行。所以T匹配这个元素。let a, 第二个元素表示第二个元素是什么都可以,所以也匹配。同时第二个元素被复制到a里面。第三个元素一定要是"nine",检查发现也匹配。所以去执行println(a)。

上述语句输出同样为"九"。第三个条件解释为:必须前缀是"n" 才匹配。

最后,switch/case可以在聚合体上使用。我们将在下一章讲解聚合体时候解释。

上一篇下一篇

猜你喜欢

热点阅读