美文网首页
02-Swift 逻辑分支

02-Swift 逻辑分支

作者: magic_pill | 来源:发表于2016-11-15 19:31 被阅读22次

    一、if...else...语句

    • 条件不需要(),Swift中没有C语言中的非零即真概念,在逻辑判断时必须指明具体的判断条件,必须为 bool 类型: true/false
    • 语句必须要有{}:--也有很多公司的代码规范中,禁止不使用{}
        //MARK: if...else 分支
        func testIF(cet4:Int,Scard:Bool)
        {
            if cet4 >= 425 {
                if Scard {
                    print("进入考场参加六级考试")
                }else{
                    print("滚回去拿学生证")
                }
            }else{
                print("没过四级,滚远一点")
            }
        }
    
        testIF(cet4: 425, Scard: false)
    

    二、guard 语句

    • guard 语句是 Swift 语言中所特有的,与 if 语法有点相似;
    • guard 语法的目的是提高程序的可读性;
    • 必须使用在函数里面;
    • 必须带有 else 语句;
    • 当条件表达式为 true 时,跳过 else 语句中的内容,直接执行后面的语句;
    • 当条件表达式为 false 时,执行 else 语句中的内容,需要跳转语句,跳转语句一般是 return、continue、break 和 throw。
        //MARK : guard 分支
        func testGuard(cet4:Int,Scard:Bool)
        {
            //如果条件满足就执行后面的语句
            //如果条件不满足,就执行 else 里面的语句
            guard cet4 >= 425 else {
                print("四级没过,不允许参加六级考试")
                return
            }
            
            guard Scard else {
                print("回去拿学生证")
                return
            }
            
            print("进入考场参加六级考试")
        }
    
        testGuard(cet4: 425, Scard: true)
    

    三、switch 语句

    • OC 中在 case 中定义变量要加 { };而 Swift 中不需要加 { }
        //OC 中在 case 中定义变量要加 { }
        int a = 13;
    
        switch (a) {
            default:
                NSLog(@"默认");
                break;
            case 2:
                NSLog(@"sdfa");
                break;
            case 10:
            {   //在 case 中定义变量要加 { }
                int c = 20;
                NSLog(@"%d",c);
            }
                break;
        }
    
    • Swift 中 case 不要加小括号 (),而 OC 中需要;
    • Swift 中 case 后面可以有多个判断条件,而 OC 后面只能有 1 个判断条件;
    • Swift 中 每个 case 语句结束后不需要加 break,其默认是不穿透,如果需要穿透就加 fallthrough 语句;而 OC 默认穿透,每个 case 语句结束要加 break;
    • Swift 中 switch 语句中必须要有 default,而且只能在 switch 语句的最后,而 OC 中可以不需要 default,而且对 default 的位置也没有要求;
    • OC 判断条件只能判整数,而 Swift 可以判断任何类型。
    //MARK : switch 语句
    let a = 10.1
    func testSwitch(x:Double)
    {
        switch x {
            case 10.1:
                print("参数为\\(x)")
                fallthrough
            case 5,10.1:
                print("参数为5或者10.1")
            default:
                print("不知道")
            }
    }
    testSwitch(x: a)
    

    四、switch 语句的特殊使用方法

    • 取值范围表示:
    • var x in 1...10 表示为 1 <= x <= 10
    • var x in 1..<10 表示为 1 <= x < 10
        //MARK - switch 语句的特殊使用方法
        func testSwitch01(score:Int)
        {
            switch score {
            case 0..<425:
                print("六级没过")
            case 425..<700:
                print("分数很高")
            case 700:
                let fallScore = 725
                print("快接近满分啦,满分为\\(fallScore)")
            default:
                print("不知道")
            }
        }
    
        testSwitch01(score: 700)
    
    • switch 中元组的使用:
    • Swift 语句中,区间可以为 double;
    • 可以进行值绑定。
    //元祖(以点坐标为例)
    func testSwitch02(point:(x:Double,y:Double))
    {
          switch point {
            case (0,0):
                print("点在原点")
            case (1...10.6,1...10):
                print("点在第一象限")
            case (_,0):
                print("点在 X 轴上")
            case (0,let y):     //值绑定
                print("在y轴上 \\(y) 位置")
            case let(x,y) where x>y:    //根据条件绑定
                print("在 y=x 直线下方,具体点位置为(\\(x),\\(y))")
            case let(x,y) where x<y:
                print("点在 y=x 上方,具体点位置为(\\(x),\\(y))")
            default:
                print("不知道")
          }
    }
    testSwitch02(point: (-40.1,-5))
    

    相关文章

      网友评论

          本文标题:02-Swift 逻辑分支

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