Swift之控制流( if 和 switch 、for-in 、 for 、 while 和 repeat-while)

声明:内容大部分来自于《THE SWIFT PROGRAMMING LANGUAGE》

我只是加以修改
使用 if 和 switch 来进行条件操作,使用 for-in 、 for 、 while 和 repeat-while 来进行循环。包裹条件和循环 变量括号可以省略,但是语句体的大括号是必须的。


if

/*
Swift中的if的使用方式”基本上”和OC一致
1.Swift中的if可以省略()
2.Swift中哪怕if后面只有一条语句, 也不能省略{}
3. 在C和OC中, 有一个概念非0即真
在Swift中, 条件只能放bool值, 取值只有两个ture/false
*/

let scores = [75, 44, 55, 62, 88]
        var teamScore = 0;
        for score in scores {
            //if语句中,条件必须是一个布尔表达式
            if score > 50 {
                teamScore += 3
            } else {
                teamScore += 1
            }
        }
        print(teamScore);
/*
在OC中 if else 可以使用三目运算符来简写
注意: 在做Swift开发中三目运算符用得非常非常多
*/
let score = (num == 5) ? 5 : 10
print(score)

可以使用if和let来处理值缺失的情况,这些值由可选值来表示,一个可的选值是一个具体的值或者是nil以表示缺失
在类型后面加上一个问好来标记这个变量(表示可选的值)

        let optionalString : String? = "hello"
        print(optionalString == nil)
        // false

        let optionalName : String? = nil
        var greeting = "hello"
        if let name = optionalName {
            greeting = "hello \(name)"
        }
        print(greeting)

另一种处理可选值的方法是通过使用 ?? 操作符来提供一个默认值。如果可选值缺失的话,可以使用默认值来代替。

        let firstName : String? = nil
        let secondName : String = "daisuke"
        let resultName = "hello, \(firstName ?? secondName)"
        print(resultName) // hello, daisuke

switch

很多人奇怪,无论是Java或者oc语言switch都有break跳出,但是
运行 switch 中匹配到的子句之后,程序会退出 switch 语句,并不会继续向下运行,所以不需要在每个子句结尾 写 break
另外注意的是:default是必须要写的,否则出错

 /*
Swift中的switch
1. 后面的()可以省略
2.OC中的switch如果没有break会穿透, 但是OC中不会, Swift不会穿透
3.OC中如果要在case中间定义变量, 必须加上{}确定作用域, 而Swift中不用
4.OC中default的位置可以随便写, 只有所有case都不满足才会执行default
而Swift中的default只能放在最后
5.OC中的default可以省略, Swift中"大部分"情况下不能省略
*/
       // switch支持任意类型的数据
        let vegetable = "haha, red"
        switch vegetable {
        case "xixi":
            print("xixi")
        case "hahas":
            print("hahas")
        case let red where red.hasSuffix("red"):
            // 将vegetable赋给red ,判断red有没有“red这个字符串”
            print("red")
        default:
            print("default")
        }

for-in

使用 for-in 来遍历字典,需要两个变量来表示每个键值对。
字典是一个无序的集合,所以他们的键和值以 任意顺序迭代结束。


        let numberDict = [
            "prime" : [1 , 2, 45, 88],
            "square" : [1,1,2,501]
        ]
        var largest = 0;
        var type = ""
        for (kind, numbers) in numberDict {
            for number in numbers {
                if number > largest {
                    largest = number
                    type = kind
                }
            }
        }
        print(type)
        print(largest)

while

        var n = 2
        while n < 100 {
            n = n * 2;
        }
        print(n)

repeat-while

/*
Swift升级到2.0之后, do while循环发生了很大的变化
do while没有do了, 因为do被用作捕获异常了
*/

        // 至少循环一次(类似Java的do-while)
        var m = 2
        repeat {
            m = m*2
        } while m < 2
        print(m)

for

/*
普通for循环, 和OC中基本一致

*/
// 0~9
for var i = 0;i < 10;i++
{
    print(i)
}

// Swift特色循环
// 0..<10 代表一个区间范围 从0开始到9, 包含头不包含尾
// Swift1.0时 0..10
for i in 0..<10
{
    print(i)
}

// _ 代表忽略, 如果不关心某个参数, 就可以使用_
// 在Swift开发中 _ 使用频率非常高
for _ in 0..<10
{
    print("lnj")
}

// 0...10 代表一个区间范围 从0开始到10, 包含头又包含尾
for i in 0...10
{
    print(i)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值