您已经看到了if
语句和循环,但是Swift有另一种类型的流控制,称为switch/case
。这是最容易认为这是一个先进的形式,如果,因为你可以有很多匹配和Swift将执行正确的一个。
在switch/case
的最基本形式中,您告诉Swift您要检查哪个变量,然后提供该变量的可能情况列表。Swift将找到与变量匹配的第一个case
,然后运行它的代码块。当该块完成时,Swift退出整个switch/case
块。
下面是一个基本示例:
代码语言:javascript复制let liveAlbums = 2
switch liveAlbums {
case 0:
print("You're just starting out")
case 1:
print("You just released iTunes Live From SoHo")
case 2:
print("You just released Speak Now World Tour")
default:
print("Have you done something new?")
}
我们本可以使用很多if
和else if
块来编写它,但这种方法更清楚,这很重要。
switch/case
的一个优点是,Swift将确保您的案例是详尽无遗的。也就是说,如果你的变量可能有一个你不检查的值,Xcode将拒绝构建你的应用程序。
在值是有效开放的情况下,比如liveAlbums
整数,您需要包含一个default
大小写来捕获这些潜在值。是的,即使你“知道”你的数据只能在一定的范围内,Swift希望绝对确定。
Swift可以对case
语句应用一些求值,以便与变量匹配。例如,如果要检查可能值的范围,则可以使用以下闭合范围运算符:
let studioAlbums = 5
switch studioAlbums {
case 0...1:
print("You're just starting out")
case 2...3:
print("You're a rising star")
case 4...5:
print("You're world famous!")
default:
print("Have you done something new?")
}
有一件事你应该知道,Swift中的switch/case
块可能不会像你看到的其他语言那样(fall through: 从一个case运行完后直接到下一个case继续运行)。如果你习惯在你的case
块中写break
,你应该知道Swift不需要这个。
相应的,您需要使用fallthrough
关键字使一个case落入下一个case。当然,如果你不知道这些是什么意思,那就更好了:别担心!
本文来自Hacking with Swift给swift初学者的入门课程Swift for Complete Beginners 的Switch case