上一章Swift教程请查看:swift if,if…
else语句
在本文中,你将学习如何使用switch控制语句来控制程序的执行流。
switch语句也是Swift控制语句的一种,例如if-else、guard等,根据不同的条件执行不同的动作。
switch语句的优点在于,它可以将一个值与几个可能的匹配模式进行比较,因此,它可以代替if..else..if同时匹配复杂的模式。
switch语句的语法switch语句的语法为:
switch variable/expression {
case value1:
// statements
case value2:
// statements
default:
// statements
}
Swift中的Switch语句是如何工作的?
- switch表达式求值一次。
- 它接受表达式并按顺序(Top -> Bottom)与每个大小写值进行比较。
- 如果存在匹配,则执行案例中的语句,并且一旦完成第一个匹配的switch案例,整个switch语句就完成执行。
- 如果没有匹配的情况,它下降到下一个情况。
- default关键字指定在没有大小写匹配的情况下运行的代码。
文章图片
注意:每个案例的主体必须包含至少一个可执行语句。
例1:使用Switch语句的简单程序
let dayOfWeek = 4
switch dayOfWeek {
case 1:
print("Sunday")case 2:
print("Monday")case 3:
print("Tuesday")case 4:
print("Wednesday")case 5:
print("Thursday")case 6:
print("Friday")case 7:
print("Saturday")default:
print("Invalid day")
}
在上面的程序中,switch语句首先将dayOfWeek值与case 1匹配,由于dayOfWeek值与第一个case值1不匹配,所以在匹配之前,它将一直保留到下一个case。
由于case 4与switch表达式匹配,case中的statementprint(“Wednesday”)执行,switch case终止。如果没有匹配大小写,则执行default中的语句。
示例2:使用fallthrough切换语句如果在case语句中使用fallthrough关键字,即使case值与switch表达式不匹配,该控件也会继续处理下一个case。
let dayOfWeek = 4
switch dayOfWeek {
case 1 :
print("Sunday")case 2:
print("Monday")case 3:
print("Tuesday")case 4:
print("Wednesday")
fallthroughcase 5:
print("Thursday")case 6:
print("Friday")case 7:
print("Saturday")default:
print("Invalid day")
}
在上面的程序中,case 4执行语句print(“Wednesday”),fallthrough关键字执行case5。即使case与switch表达式不匹配,case 5中的print语句(“Thursday”)也会执行,因此,你可以在控制台中看到周四的输出。
示例3:使用更复杂模式的Switch语句
let programmingLanguage = (name: "Go", version: 10)
switch programmingLanguage {
case (let name,let version) where (version <
0 &
&
name.count <
0) :
print("无效的输入")
case ("Swift",let version) where version == 4:
print("发现最新版本的Swift")
case ("Swift" , ..<
4 ):
print("发现了旧版本的swift)")
case ("Swift" ,4...) :
print("大于4的Swift版本还没有发布")
case ("Taylor Swift",30) :
print("OMG. This is Taylor swift")
case (let name, let version):
print("""
编程语言:\(name)
Version: \(version)
Status: Not found
""")
}
在上面的程序中,我们将tupletype的表达式编程语言与以下不同的case进行匹配:
- case (let name,let version),其中(version < 0 & & name.count< 0)
你还可以使用where子句将条件应用于这些值,对于多个where条件,可以使用& & 操作符将它们连接起来,如上面示例所示。
【swift switch条件分支语句 – Swift最新教程】如果case不满足where子句中定义的条件,那么case块中的语句将不执行,并通过比较下一个switch case。
- case(“Swift”,..< 4)
- case(“迅速”,4……)
- case (let name, let version)
推荐阅读
- swift for-in循环语句 – Swift最新教程
- swift if,if…else语句 – Swift最新教程
- swift按位和移位操作符 – Swift最新教程
- swift三元条件运算符(三目运算符) – Swift最新教程
- swift运算符的优先级和结合性 – Swift最新教程
- swift操作符,使用语法和使用例子 – Swift最新教程
- swift使用注释的几种方式 – Swift最新教程
- Swift表达式,语句和代码块 – Swift最新教程
- swift基本输入输出 – Swift最新教程