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;

 }

 */

 

/** Swift:可以判断对象类型, 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")

}

 */

 

转载于:https://www.cnblogs.com/lurenq/p/7364431.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值