gpt4 book ai didi

Swift编程中的switch...case语句实例解析

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

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

这篇CFSDN的博客文章Swift编程中的switch...case语句实例解析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

Swift中的switch...case语句可以判断对象类型, Objective-C中则必须是整数。 不可以穿透,可以不写break.

?
1
2
3
4
5
6
7
8
9
10
11
var rank = "A"
switch rank{
   case "A": //相当于if
     print("优")
   case "B": // 相当于else if
     print("优")
   case "C": // 相当于else if
     print("优")
   default: // 相当于else
     print("没有评级")
}

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

?
1
2
3
4
5
6
7
8
9
10
var rank1 = "A"
switch rank1{
   case "A":
   case "B":
     print("优")
   case "C":
     print("优")
   default:
     print("没有评级")
}

只能这么写 。

?
1
2
3
4
5
6
7
8
9
var rank1 = "A"
switch rank1{
   case "A", "B": // 注意OC不能这样写
     print("优")
   case "C":
     print("差")
   default:
     print("没有评级")
}

不能不写default 。

?
1
2
3
4
5
6
7
8
9
var rank2 = "A"
switch rank2{
   case "A":
     print("优")
   case "B":
     print("良")
   case "C":
     print("差")
}

default位置只能在最后 。

?
1
2
3
4
5
6
7
8
9
10
11
var rank3 = "A"
switch rank3{
   default:
     print("没有评级")
   case "A":
     print("优")
   case "B":
     print("良")
   case "C":
     print("差")
}

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

?
1
2
3
4
5
6
7
8
9
10
11
12
var rank4 = "A"
switch rank4{
   case "A":
     var num = 10
     print("优")
   case "B":
     print("良")
   case "C":
     print("差")
   default:
     print("没有评级")
}

区间和元祖匹配 。

?
1
2
3
4
5
6
7
8
9
var num = 10;
switch num{
   case 1...9:
     print("个位数")
   case 10...99:
     print("十位数")
   default:
     print("其它数")
}
?
1
2
3
4
5
6
7
8
9
10
11
var point = (10, 15)
switch point{
   case (0, 0):
     print("坐标在原点")
   case (1...10, 10...20): // 可以在元祖中再加上区间
     print("坐标的X和Y在1~10之间")
   case (_, 0): // X可以是任意数
     print("坐标的X在X轴上")
   default:
     print("Other")
}

值绑定 。

?
1
2
3
4
5
6
7
8
9
10
11
var point = (1, 10)
switch point{
   case (var x, 10): // 会将point中X的值赋值给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")
}

根据条件绑定 。

?
1
2
3
4
5
6
7
8
var point = (100, 10)
switch point{
   // 只有where后面的条件表达式为真才赋值并执行case后的语句
   case var(x, y) where x > y:
     print("x= \(x) y= \(y)")
   default:
     print("Other")
}

fallthrough关键字 Swift语言中的switch不会从上一个case分支落入到下一个case分支中。相反,只要第一个匹配到的case分支完成了它需要执行的语句,整个switch代码块完成了它的执行。相比之下,C语言要求你显示的插入break语句到每个switch分支的末尾来阻止自动落入到下一个case分支中。Swift语言的这种避免默认落入到下一个分支中的特性意味着它的switch 功能要比C语言的更加清晰和可预测,可以避免无意识地执行多个case分支从而引发的错误。   如果你确实需要C风格的落入(fallthrough)的特性,你可以在每个需要该特性的case分支中使用fallthrough关键字。下面的例子使用fallthrough来创建一个数字的描述语句.

?
1
2
3
4
5
6
7
8
9
10
11
let integerToDescribe = 5
var description = "The number \(integerToDescribe) is"
switch integerToDescribe {
case 2, 3, 5, 7, 11, 13, 17, 19:
   description += " a prime number, and also"
   fallthrough
default:
   description += " an integer."
}
println(description)
// prints "The number 5 is a prime number, and also an integer."

这个例子定义了一个String类型的变量description并且给它设置了一个初始值。函数使用switch逻辑来判断integerToDescribe变量的值。当integerToDescribe的值属于列表中的质数之一时,该函数添加一段文字在description后,来表明这个是数字是一个质数。然后它使用fallthrough关键字来"落入"到default分支中。default分支添加一段额外的文字在description的最后,至此switch代码块执行完了。   如果integerToDescribe的值不属于列表中的任何质数,那么它不会匹配到第一个switch分支。而这里没有其他特别的分支情况,所以integerToDescribe匹配到包含所有的default分支中。   当switch代码块执行完后,使用println函数打印该数字的描述。在这个例子中,数字5被准确的识别为了一个质数。   NOTE:fallthrough关键字不会检查它下一个将会落入执行的case中的匹配条件。fallthrough简单地使代码执行继续连接到下一个case中的执行代码,这和C语言标准中的switch语句特性是一样的.

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

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