// 1.基本用法

let sex = 0   // 0: 1: 其他:其他

// ** 1> switch可以不跟() 2> case语句结束后可以不跟break,默认系统会加


switch sex {

case 0:

    print("")

    // fallthrough

case 1:

    print("")

default:

    print("其他")

}

// 2.基本用法的补充:

// ** 1>如果希望一个case中出现case穿透,那么可以在case语句结束后跟上fallthrough

// ** 2>case后面可以跟多个条件,多个条件以,分割

switch sex {

    case 0, 1:

        print("正常人")

    default:

        print("其他")

}

// ** 3.switch可以判断浮点型

let a : Double = 3.14


switch a {

case 3.14:

    print("π")

default:

    print("π")

}

// ** 4.switch可以判断字符串

let m = 20

let n = 30

let opration = "+"


var result = 0


switch opration {

case "+":

    result = m + n

case "-":

    result = m - n

case "*":

    result = m * n

case "/":

    result = m / n

default:

    print("非法操作符")

}

// ** 5.switch可以判断区间和元祖匹配


let score = 93


switch score {

case 0..<60:

    print("不及格")

case 60..<80:

    print("及格")

case 80..<90:

    print("良好")

case 90...100:    //  元祖匹配

    print("不错噢")

default:

    print("不合理的分数")

}

/*

区间和元祖匹配

var num = 10;

switch num{

    case 1...9:

        print("个位数")

    case 10...99:

        print("十位数")

    default:

        print("其它数")


}



var point = (10, 15)

switch point{

    case (0, 0):

        print("坐标在原点")

    case (1...10, 10...20): // 可以在元祖中再加上区间

        print("坐标的XY1~10之间")

    case (_, 0): // X可以是任意数

        print("坐标的XX轴上")

    default:

        print("Other")

}

*/

// **6. Swift: 可以判断对象类型,

//不可以穿透

//可以不写break,

var rank = "A"

switch rank{

    case "A": //相当于if

        print("")

    case "B": // 相当于else if

        print("")

    case "C": // 相当于else if

        print("")

    default: // 相当于else

        print("没有评级")

}

// ** 7.case中定义变量不用加大括号

var rank4 = "A"

switch rank4{

    case "A":

        var num = 10

        print("")

    case "B":

        print("")

    case "C":

        print("")

    default:

        print("没有评级")

}

/*

值绑定

var point = (1, 10)

switch point{

    case (var x, 10): // 会将pointX的值赋值给X

        print("x= \(x)")

    case (var x, var y): // 会将pointXY的值赋值给XY

        print("x= \(x) y= \(y)")

    case var( x, y):

        print("x= \(x) y= \(y)")

    default:

        print("Other")

}


根据条件绑定

var point = (100, 10)

switch point{

    // 只有where后面的条件表达式为真才赋值并执行case后的语句

    case var(x, y) where x > y: 

        print("x= \(x) y= \(y)")

    default:

        print("Other")

}

*/