美文网首页
Swift-控制流

Swift-控制流

作者: chengfengios | 来源:发表于2017-09-18 17:19 被阅读0次

    循环语句 for-in , while
    if和循环控制语句
    早退语句 guard else(选修)
    退出循环语句 break continue
    switch

    循环语句

    • for in循环,string 和 集合已经介绍差不多了
    let arr = [1, 2, 3]
    for i in arr {
        print(i)
    }
    
    for index in arr.indices {
        print(arr[index])
    }
    
    //Swift 不再支持 for (inti=0; i < 10; i++),顺序执行可以用下面
    for i in 0 ... 3 {
        print(i)
    }
    
    • while 循环
    var i =  1
    var sum = 0
    
    while i <= 100 {
        sum += i
        i += 1
    }
    
    print(sum)
    

    if和循环控制语句

    let a = 23
    if a > 23 {
        print("大于")
    } else {
        print("小于")
    }
    
    //if 后面必须为Bool值, 其它类型不再支持
    // if 23  { //会报错
    

    早退语句

    早退语句: 在必需条件不满足的早期阶段退出执行. 语句关键字 guard, 与if相似. 属于条件强调意味很浓的语句. guard let 与 if let相似,用于可选类型.guard有助于提升代码可读性.

    //guard 和 if 类似,但是强制 guard xxx else {return xxx} 格式
    func hasPositiveNumber(numbers: [Int]) -> Bool {
        for number in numbers {
            guard number <= 0 else {
                //如果number 不是小于等于0 的,就执行else,表示有正数
                return true
            }
    
            //下面两个比较if的区别
            /*
            //写法太臃肿
            if number <= 0 {
                
            } else {
                return true
            }
            //虽然简洁,但是if 不强制return,仍有可能粗心忘记return
            if number > 0 {
                return true
            }
           */
        }
        return false
    }
    
    let numbers = [-1, 4,-2, -3]
    
    print(hasPositiveNumber(numbers: numbers))
    

    退出循环语句 break continue

    continue 结束本次循环, break 结束整个循环,不再举例

    switch

    • 普通用法
    let a = 1
    switch a {
    case 1:
        print("一")
    case 2:
        print("二")
    case 3:
        print("三")
    default:
        print("其它")
    }
    
    • 范围匹配
    //根据室外温度来自动调节室内温度的空调
    var temp = 50
    
    switch temp {
    case 35...40:
        print("天气非常炎热,强力制冷模式启动")
    case 25...34:
        print("气温不算太热,空调制冷模式启动")
    case 19...24:
        print("除湿模式")
    case 0...18:
        print("制暖模式")
    default:
        print("室外已经超过本空调的控制范围!")
    }
    
    • 元组匹配
    //判断坐标 是否位于 原点 X轴 Y轴 或  2 * 2的坐标区域内
    let 坐标1 = (0, 2)
    
    switch 坐标1 {
    case (0, 0):
        print("原点")
    case (_, 0):
        print("坐标在X轴上")
    case (0, _):
        print("坐标在Y轴上")
    case (-2...2, -2...2):
        print("坐标在2*2范围内")
    default:
        break
    }
    
    
    • 值绑定
    //把坐标的值显示出来
    let 坐标2 = (13, 12)
    
    switch 坐标2 {
    case (0, 0):
        print("原点")
    case (let x, 0):
        print("坐标在X轴上:", x)
    case (0, let y):
        print("坐标在Y轴上:", y)
    case (let x, let y):
        print(x, y)
    }
    
    • 值绑定的where再匹配:
    //判断坐标是否在对角线上
    let 坐标3 = (-1.5, 1.5)
    
    switch 坐标3 {
    case (let x, let y) where x == y:
        print("坐标在45度对角线")
    case (let x, let y) where x == -y:
        print("坐标在135度对角线")
    default:
        print("坐标不在任何对角线上")
    }
    

    相关文章

      网友评论

          本文标题:Swift-控制流

          本文链接:https://www.haomeiwen.com/subject/wtebsxtx.html