永利皇宫:Switch

/*

 Swith

 格式: switch(供给非常的值) case 相称的值: 必要实施的言辞 break;

 OC:

 char rank = ‘A’;

 switch (rank) {

 case ‘A’:

 NSLog(@”优”);

 break;

 case ‘B’:

 NSLog(@”良”);

 break;

 case ‘C’:

 NSLog(@”差”);

 break;

 default:

 NSLog(@”没有评级”);

 break;

 }

 

 能够穿透

 char rank = ‘A’;

 switch (rank) {

 case ‘A’:

 NSLog(@”优”);

 case ‘B’:

 NSLog(@”良”);

 break;

 case ‘C’:

 NSLog(@”差”);

 break;

 default:

 NSLog(@”未有评级”);

 break;

 }

 

 能够不写default

 char rank = ‘A’;

 switch (rank) {

 case ‘A’:

 NSLog(@”优”);

 break;

 case ‘B’:

 NSLog(@”良”);

 break;

 case ‘C’:

 NSLog(@”差”);

 break;

 }

 

 default地点能够随意放

 char rank = ‘E’;

 switch (rank) {

 default:

 NSLog(@”未有评级”);

 break;

 case ‘A’:

 {

 int score = 100;

 NSLog(@”优”);

 break;

 }

 case ‘B’:

 NSLog(@”良”);

 break;

 case ‘C’:

 NSLog(@”差”);

 break;

 }

 

 

 在case中定义变量必要加大括号, 不然成效域混乱

 char rank = ‘A’;

 switch (rank) {

 case ‘A’:

 {

 int score = 100;

 NSLog(@”优”);

 break;

 }

 case ‘B’:

 NSLog(@”良”);

 break;

 case ‘C’:

 NSLog(@”差”);

 break;

 }

 

 不可能决断目的类型

 NSNumber *num = @100;

 switch (num) {

 

 case @100:

 NSLog(@”优”);

 break;

 default:

 NSLog(@”未有评级”);

 break;

 }

 */

 

/** 斯威夫特:能够看清目的类型, OC必须是整数 **/

//不得以穿透

//能够不写break

var rank = “A”

switch rank{

    case “A”:  // 相当于if

      print(“A”)

    case “B”: // 相当于 else if

      print(“B”)

    case “C”: // 相当于 else if

      print(“C”)

    default:  // 相当于 else

      print(“其他”)

}

 

/*

 因为不可能穿透所以不可能这么写

 var rank1 = “A”

 switch rank1{

 case “A”:

 case “B”:

 print(“B”)

 case “C”:

 print(“C”)

 default:

 print(“其他”)

 }

 */

//只好那样写

var rank1 = “A”

switch rank1{

case “A”, “B”: // 注意OC不能那样写

    print(“A&&B”)

case “C”:

    print(“C”)

default:

    print(“其他”)

}

 

/*

 //不能够不写default

 var rank2 = “A”

 switch rank2{

 case “A”:

 print(“A”)

 case “B”:

 print(“B”)

 case “C”:

 print(“C”)

 }

 */

 

/*

 //default地方只辛亏结尾

 var rank3 = “A”

 switch rank3{

 default:

 print(“其他”)

 case “A”:

 print(“A”)

 case “B”:

 print(“B”)

 case “C”:

 print(“C”)

 }

 */

 

//在case中定义变量不用加大括号

var rank4 = “A”

switch rank4{

case “A”:

    var num = 10

    print(“A”)

case “B”:

    print(“B”)

case “C”:

    print(“C”)

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(“坐标的X和Y在1~10期间”) // 能够在元祖中再加上区间

default:

    print(“Other”)

}

*/

 

/*

//值绑定

var point = (1, 10)

    switch point{

    case (var x, 10):   // 会将point中的x赋值给

        print(“x = \(x)”)

    case (var x, var y): // 会将point中xy的值赋值给xy

        print(“x = \(x) y = \(y)”)

    case var(x,y):

        print(“x = \(x) y =\(y)”)

    default:

        print(“Other”)

    }

 

//依照规范绑定

var point = (101, 100)

switch point{

    // 唯有where后边的标准表达式为真才赋值并试行case后的口舌

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

    print(“x = \(x) y = \(y)”)

default:

    print(“Other”)

}

 */

 

网站地图xml地图