JHHK

欢迎来到我的个人网站
行者常至 为者常成

2_1、流控制

目录

if else

func ifElseExpression() -> Void {
    /**
        if 后面的条件可以省略小括号 条件后面的大括号不可以省略
        if后面的条件只能是Bool类型
     */

    //1、小括号可以省略、大括号不可以省略
    do{
        let age = 18
        if age<18 {
            print("age < 18")
        }else if age == 18 {
            print("age = 18");
        }else if age>18 {
            print("age>18")
        }
    }
    

    //2、if后面的条件只能是Bool类型
    do{
        let age2 = 18
        
        //报错:'Int' is not convertible to 'Bool'
        //if age2 {}
        
        //正确
        if age2==18 {}
    }
}

while循环

func whileExpression() -> Void {
    //1、Swift3之后去掉了 num++ num--运算符
    var num = 3
    while num>0 {
        print("num is \(num)")
        num-=1
    }

    //2、相当于 do while
    var num2 = 3
    repeat{
        print("num2 is \(num2)")
        num2-=1
    } while num2>3
}

for循环

func forExpression() -> Void {
    
    //0、C-style for statement has been removed in Swift 3
    print("------------------0---------------------")
    do{
        //for(var i = 0;i<10;i++){}
    }
    
    //1、闭区间运算符 ...
    print("------------------1---------------------")
    do{
        for i in 0...3 {
            print(i)
        }

        let range = 0...3
        for i in range {
            print(i)
        }

        let c = 0
        let c2 = 3
        for i in c...c2 {
            print(i)
        }

        for i in 0...c2 {
            print(i)
        }
    }
    

    //2、i 默认是let只能取值不能修改,有需要时可以声明为var
    print("------------------2---------------------")
    do{
        for var i in 1...3 {
            i+=5
            print(i)
        }
    }
    

    //3、如果for循环内用不到i 可以使用 _ 忽略
    print("------------------3---------------------")
    do{
        for _ in 0...3 {
            print("for循环")
        }
    }
    


    //4、半开区间运算符
    print("------------------4---------------------")
    do{
        for i in 1..<5 {
            print(i)
        }
    }
    


    //5、区间运算符在数组上
    print("------------------5---------------------")
    do{
        let array = ["Anna","Alex","Brian","Jack"];
        for name in array {
            print(name)
        }

        for name in array[1...2] {
            print(name)
        }

        for name in array[1...] {
            print(name)
        }
    }
    
    

    //6、字符串与区间运算符
    print("------------------6---------------------")
    do{
        let stringRange = "a"..."f"
        print(stringRange.contains("d"))
        
        
        for i in "hello" {
            print(i);
        }
    }

    
    
    //7、带间隔的区间值
    print("------------------7---------------------")
    do{
        let fromV = 4       //起始
        let throughV = 11   //终止
        let intervalV = 2   //间隔
        for tickMark in stride(from:fromV, through:throughV, by: intervalV) {
            print(tickMark)
        }
    }
}

swich

func swichExpression() -> Void {
    //1、case 、defaul后面不能写大括号{}
    let num4 = 1
    switch num4 {
    case 0:
        //print("num4 is 0")
        break
    case 1:
        print("num4 is 1")
        break
    default:
        //print("num4 is other")
        break
    }


    //2、默认可以不写break 并不会贯穿到后面的条件
    let num42 = 0
    switch num42 {
    case 0:
        print("num42 is 0")
    case 1:
        print("num42 is 1")
    default:
        print("num42 is other")
    }


    //3、fallthrough可以实现贯穿效果
    let num43 = 0
    switch 0 {
    case 0:
        print("num43 is 0")
        fallthrough
    case 1:
        print("num43 is 1")
        fallthrough
    default:
         print("num43 is other")
    }


    //4、swich必须要保证能处理所有情况 否则会报错 Switch must be exhaustive
    //另外 case 与 default 后边必须跟一条语句 没有逻辑时 可以写 break
    let num44 = 0
    switch num44 {
    case 0:
        print("num44 is 0")
    case 1:
        print("num44 is 1")
    default:
        break
    }

    
    //5、复合条件
    //swich 也支持Character、String类型
    let string45 = "Jack"
    switch string45 {
    case "Jack":
        fallthrough
    case "Rose":
        print("Right person")
    default:
        break
    }

    //6、复合条件的另一种写法
    let string46 = "Rose"
    switch string46 {
    case "Jack","Rose":
        print("Right person")
    default:
        break
    }


    //7、区间匹配
    let count47 = 62
    switch count47 {
    case 0:
        print("none")
    case 1..<5:
        print("a few")
    case 5..<12:
        print("several")
    case 12..<100:
        print("dozens of")
    default:
        break
    }

    //8、元组匹配
    let poin48 = (1,1)
    switch poin48 {
    case (0,0):
        print("the origin")
    case (_,0):
        print("on the x-axis")
    case (0,_):
        print("on the y-axis")
    case (-2...2,-2...2):
        print("inside the box")
    default:
        print("outsize of the box")
    }


    //9、值绑定
    let point49 = (2,0)
    switch point49 {
    case (let x,0):
        print("on the x-axis with an x value of \(x)")
    case (0,let y):
        print("on the y-axis with an y value of \(y)")
    case (let x, let y):
        print("somewhere else at (\(x),\(y))")
    }
}

where

func whereExpression(){
    let poin51 = (1,-1)
    switch poin51 {
    case (let x, let y) where x==y:
        print("on the line x = y")
    case (let x,let y) where x == -y:
        print("on the line x=-y")
    case (let x,let y):
        print("\(x),\(y) is just some arbitrary point")
    }
}

标签语句

func  outerExpression() -> Void {

    outer:for i in 1...4 {
        print("i == ",i)
        
        for j in 1...4 {
            //结束内部的本次循环进入下次循环
            if i==2 && j==2 {continue}
            print("j = ",j)
        }
    }
    
    print("--------------------------")
    
    outer:for i in 1...4 {
        print("i == ",i)
        
        for j in 1...4 {
            //不仅结束内部本次循环 也结束外部本次循环 外部循环进入下次循环
            if i==2 && j==2 {continue outer}
            print("j = ",j)
        }
    }
    
    print("--------------------------")
    
    outer:for i in 1...4{
        print("i == ",i)
        for j in 1...4 {
            //结束内部的for循环
            if i==2 && j == 2 {break}
            print("j = ",j)
        }
    }
    
    print("--------------------------")
    
    outer:for i in 1...4{
        print("i == ",i)
        for j in 1...4 {
            //内部 外部 彻底结束
            if i==2 && j == 2 {break outer}
            print("j = ",j)
        }
    }
}

行者常至,为者常成!





R
Valine - A simple comment system based on Leancloud.