gpt4 book ai didi

Swift中的条件切换语句switch...case学习教程

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Swift中的条件切换语句switch...case学习教程由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

语法 Swift 语言中 switch 语句的语法:

复制代码 代码如下:

switch expression {    case expression1  :       statement(s)       fallthrough /* 可选 */    case expression2, expression3  :       statement(s)       fallthrough /* 可选 */ 。

  。

   default : /* 可选 */       statement(s); } 。

注意:在大多数语言中,switch 语句块中,case 要紧跟 break,否则 case 之后的语句会顺序运行,而在 Swift 语言中,默认是不会执行下去的,switch 也会终止。如果你想在 Swift 中让 case 之后的语句会按顺序继续运行,则需要使用 fallthrough 语句。 需要注意的地方有两点: Switch当然也支持显式的break,通常只有一种情况下你会这么做,那就是当你也不想在default里做任何事情的时候,这个时候你就可以在default里显式地加上一句break。 fallthrough并不是在任何情况下都有效,当你在Switch里使用Value Binding技术的时候,fallthrough就被禁止了。Value Binding在下面会讲到.

  。

支持多种数据类型 在Objective-C里,Switch语句只能支持整形的数据(或者一个字符),但是在Swift里,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了.

  。

支持区间运算符 不仅仅是循环结构里可以用区间运算符,在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 (name,  _, age) = ("Bannings" ,true, 22) 

那么在使用Switch时,同样支持这项特性:

复制代码 代码如下:

let request = (true,"success") 
switch request { 
    case (_, "success"): 
        "success"   //被输出 
    case (false, _): 
        "failed" 
    default: 
        "default" 

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

复制代码 代码如下:

let request = (10,"failed") 
switch request { 
    case (_, "success"): 
        "success" 
    case (1 ... 10, _): 
        "1~10"    //被输出 
    default: 
        "default" 

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

复制代码 代码如下:

let request = (0,"success") 
switch request { 
    case (0, let state): 
        state    //被输出:success 
    case (let errorCode, _): 
        "error code is (errorCode)" 
}  // 涵盖了所有可能的case,不用写default了 

这样也是可以的:

复制代码 代码如下:

let request = (0,"success") 
switch request { 
    case let (errorCode, state): 
        state    //被输出:success 
    case (let errorCode, _): 
        "error code is (errorCode)" 

把let放在外面和放在里面为每一个元素单独写上let是等价的。 当你在一个case里使用Value Binding的时候,如果你同时也在它的上一个case里使用了fallthrough,这是编译器所不允许的,你可能会收到这样一个编译错误:   只要把下面的errorCode去掉就行了,当然,考虑好自己的逻辑.

  。

支持额外的逻辑判断 在使用Switch语句时,Switch会适当地导向相应的case部分,这其实就相当于做了一次逻辑判断,但Swift的Switch语句还支持额外的逻辑判断:

复制代码 代码如下:

let request = (0,"success") 
switch request { 
    case (0, let state) where state != "success": 
        state 
    case (let errorCode, _): 
        "error code is (errorCode)"//被输出:"error code is 0" 

这同样很酷,相信在某种情况下会派上大用场.

  。

总结 Swift对Switch进行了大大增强,使Switch的灵活性得到了很大提升,这是激动人心的改变,但是如果掌控不好其中的变化,可能会使你在进行错误排查时增加难度,也会使代码复杂度变高。在适当地时候灵活运用,保持头脑清晰总是有益的.

最后此篇关于Swift中的条件切换语句switch...case学习教程的文章就讲到这里了,如果你想了解更多关于Swift中的条件切换语句switch...case学习教程的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com