码迷,mamicode.com
首页 > 其他好文 > 详细

switch

时间:2015-08-07 07:06:45      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:

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是等价的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

switch

标签:

原文地址:http://blog.csdn.net/qi_ruihua/article/details/47329935

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!