swift switch条件分支语句 – Swift最新教程

上一章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关键字指定在没有大小写匹配的情况下运行的代码。
swift switch条件分支语句 – Swift最新教程

文章图片
注意:每个案例的主体必须包含至少一个可执行语句。
例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)
这种情况将switch表达式值绑定到临时常量或变量,以便在let关键字的情况中使用,这称为值绑定。
你还可以使用where子句将条件应用于这些值,对于多个where条件,可以使用& & 操作符将它们连接起来,如上面示例所示。
【swift switch条件分支语句 – Swift最新教程】如果case不满足where子句中定义的条件,那么case块中的语句将不执行,并通过比较下一个switch case。
  • case(“Swift”,..< 4)
本例将tuple第一个元素与字符串文字“Swift”匹配,并检查第二个元素是否位于单侧的范围..< 4。
  • case(“迅速”,4……)
本例将tuple第一个元素与字符串文字“Swift”匹配,并检查第二个元素是否位于单侧的range4中……
  • case (let name, let version)
这种情况将元组的每个值绑定到临时常量或变量。

    推荐阅读