首页 > 代码库 > Swift流程控制

Swift流程控制

使用if和switch来创建流程条件,使用for-in、for、while、do-while来创建循环。条件和变量外面的小括号时可选的,但是循环体外面的大括号时必选的。

如下代码

 

1let individualScore=[75,43,103,87,12]
2var teamScore=0;
3for score in individualScore{
4    if(score>50){
5    teamScore+=3
6    }
7    else{
8        teamScore+=1;
9    }
10}
11println("\(teamScore)")

 

if语句中,条件必须时一个布尔型的表达式。
你可以通过if和let结合在一起来表达一些不明确的值。它说代表的值可以时一个确切的值也是可以时nil,可以通过变量类型后面跟上?的形式来表示。

1var optionalName:String?="lisen";
2//optionalName=nil;
3var greeting="Hello";
4if let name=optionalName
5{
6    greeting="Hello,\(name)"
7}
8println(greeting);

 

运行结果


Hello,lisen
Program ended with exit code: 0

如果我们把上面的注释去掉再次运行,运行结果如下


Hello
Program ended with exit code: 0

if-let其实就相当于一个简化来的if else语句


switch语句支持任何数据(类型)并且更强大的比较操作

 

1import Foundation
2 
3let vegetable="red pepper"
4switch vegetable{
5    case "celery":
6        println("我靠,这个单词不认识");
7    case let x where
8        x.hasSuffix("pepper"):
9        println("有辣椒");
10default:
11println("吃点啥都行")
12}

 

运行结果


有辣椒
Program ended with exit code: 0

switch语句结尾必须有default条件

 

for-in

 

1import Foundation
2let interestingNumbers=[
3    "Prime":[2,3,5,7,11,13],
4    "Fibonacci":[1,1,2,3,5,8],
5    "Square":[1,4,9,16,25],
6]
7var largest=0
8for(kind,numbers) in
9interestingNumbers
10{
11    for number in numbers{
12        if(number>largest)
13        {
14            largest=number;
15            println(largest);
16        }
17         
18    }
19}

 

运行结果

1
4
9
16
25
Program ended with exit code: 0

上面这段代码就是书中练习的代码


使用while语句执行重复的代码。

 

1var n=2;
2while(n<=3){
3    println(n*2);
4    n++;
5}
与while类似的还有do-while语句
1import Foundation
2 
3var n=2;
4do{
5println(n*2);
6    n++;
7}while(n<=4)

 

while与do-while语句的区别就是do-while语句始终会执行一遍,然后判断条件,而while语句当条件为true时才执行

 

可以使用..来执行自动增加


如下:

 

1import Foundation
2 
3//var firseForLoop=0;
4for i in 0..3{
5    println(i);
6}
7 
8println("***************************");
9for(var i=0;i<3;i++){
10    println(i);
11}

 

程序运行结果


QQ20140608-1

 

  • 本文固定链接: http://www.iamlisen.com/swift-flow-control.html