Swift教程之控制流详解

2020-01-08 22:47:32王旭

 

复制代码
let numberSymbol: Character = "三"  // Simplified Chinese for the number 3
var possibleIntegerValue: Int?
switch numberSymbol {
case "1", "١", "一", "๑":
possibleIntegerValue = 1
case "2", "٢", "二", "๒":
possibleIntegerValue = 2
case "3", "٣", "三", "๓":
possibleIntegerValue = 3
case "4", "٤", "四", "๔":
possibleIntegerValue = 4
default:
break
}
if let integerValue = possibleIntegerValue {
println("The integer value of (numberSymbol) is (integerValue).")
} else {
println("An integer value could not be found for (numberSymbol).")
}
// prints "The integer value of 三 is 3."

 

上面的例子首先检查numberSymbol是不是一个数字,阿拉伯数字,汉字,拉丁文或者泰文都可以。如果匹配完成,则将possibleIntegerValue赋值。最后在通过if语句检测是否已被赋值,并绑定到integerValue常量上,最后输出。default语句用来迎接未能被上述case匹配的情况,但是不需要做任何事情,因此直接使用break终止即可。

fallthrough

由于Swift中的switch语句不会自动的因为没有break而跳转到下一个case,因此如果需要想C语言中那样,依次执行每个case的时候,就需要用到fallthrough关键词。

像下面这个例子一样,default分支最终都会被执行:

 

复制代码
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."

 

标签语句

switch和循环可以互相嵌套,循环之间也可以互相嵌套,因此在使用break或者continue的时候,需要知道到底是对哪个语句起作用。这就需要用到标签语句。标签语句的一般形式如下:

 

复制代码