switch

for i in 0...10{

 

    switch i{

    

    case 0:

       print(i)

       break

    case 1:

       print("能不能继续走2")

    case 2:

       print("2走了")

       break

       

    case 3,4:

       print(i)

    case 5:

       print(i)

       break

       

    //使用新的关键字fallthrough能使Switch在执行完一个case之后,紧接着执行下一条case

    case 6:

       print(i)

        fallthrough

        //fallthrough并不是在任何情况下都有效,当你在Switch里使用ValueBinding技术的时候,fallthrough就被禁止了。Value Binding在下面会讲到。

    case 7:

       print(i)

       break

       

       

    case :1.5

       break

      //SwiftSwitch语句一定要涵盖所有的情况,这并不是说一定要有default,只要上面的case能满足所有的情况,就可以不用写default

    default:

       print("default\(i)")

       break

        //Switch当然也支持显式的break,通常只有一种情况下你会这么做,那就是当你也不想在default里做任何事情的时候,这个时候你就可以在default里显式地加上一句break

       

    }

    

}

 

//Objective-C里,Switch语句只能支持整形的数据(或者一个字符),但是在Swift里,Switch能支持多种数据类型,包括浮点、布尔、字符串等.可以说是史上支持数据类型最多的Switch了。

//支持浮点:

let float = 1.5

switch float {

    case 1.5:

       "1.5"

    default:

    "default"

}

//支持布尔:

let isSuccess = true

switch isSuccess {

    case true:

       "true"   //被输出

    default:

        "default"

}

//支持字符串:

let name = "Bannings"

    switch name {

    case "Bannings":

       "Bannings"   //被输出

    default:

        "default"

}

 

//支持区间运算符 不仅仅是循环结构里可以用区间运算符,在Switch里同样可以用区间运算符:

var i = 15

    switch i {

    case 0 ... 10:

       "0~10"

    case 11 ... 20:

       "11~20" //被输出

    default:

        "default"

}

 

//支持元组 作为被大大增强的Switch,元组也是被支持的:

let request = (true,"success")

switch request {

    case (true, "success"):

       "success"   //被输出

    case (false, "failed"):

       "failed"

    default:

        "default"

}

 

//使用元组和使用其他数据类型一致,不过元组还有一项特点,对于不想关心的值,可以用下划线_跳过,如:

let (name2,  _,age2) = ("Bannings" ,true, 22)

let request2 = (true,"success")

switch request2 {

case (_, "success"):

    "success"   //被输出

case (false, _):

    "failed"

default:

    "default"

}

//对于不关心的值跳过,只要满足另一个值就行了。需要注意一点的是,如果元组中的值也是数字类型,那么也是可以用区间运算符的:

let request3 = (10,"failed")

switch request3 {

case (_, "success"):

    "success"

case (1 ... 10, _):

   "1~10"    //被输出

default:

    "default"

}

 

 

//ValueBinding

//针对元组,Switch还支持类似于Optional BindingValue Binding,就是能把元组中的各个值提取出来,然后直接在下面使用:

let requestBinding = (0,"success")

switch requestBinding {

case (0, let state):

    state    //被输出:success

case (leterrorCode, _):

    "errorcode is \(errorCode)"

// 涵盖了所有可能的case,不用写default

//这样也是可以的:

let requestBinding2 = (0,"success")

switch requestBinding2 {

case let(errorCode, state):

    state    //被输出:success

case (leterrorCode, _):

    "errorcode is \(errorCode)"

}

//let放在外面和放在里面为每一个元素单独写上let是等价的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值