首页 > 代码库 > Welcome to Swift (苹果官方Swift文档初译与注解二十九)---209~218页(第四章-- 流程控制)
Welcome to Swift (苹果官方Swift文档初译与注解二十九)---209~218页(第四章-- 流程控制)
Break
break语句会立刻结束整个流程控制的执行.break语句可以在switch语句或者循环语句中帮助你提前结束循环或者switch的执行.
Break in a Loop Statement (循环语句中的break)
当在循环语句中使用break,会立刻结束循环的执行,并且跳转到循环体之后的第一行代码.循环不会再遍历执行了.
Break in a Switch Statement (switch语句的break)
当在switch语句中使用break,break会立刻结速switch,并跳转到switch语句大括号(})后的第一行代码.
这种方式可以用来忽略一个或者多个case.由于switch语句执行的时候,不可以有空的case,因此有时候需要忽略一个case.你可以将break语句作为case的整个执行体来忽略这个部 分;一旦switch匹配到这个case的时候,break语句会立刻结束switch的执行.
注意点:
一个switch case 如果只有注释,会报编译器错误.注释不是语句,也不会让case被跳过,如果要忽略这个case就要break语句.
请看下面代码例子:
let numberSymbol: Character = "三" // Simplified Chinese for the number 3
var possibleIntegerValue: Int?
switch numberSymbol {
case "1", "?", "一", "?":”
possibleIntegerValue = http://www.mamicode.com/1
case "2", "?", "二", "?":
possibleIntegerValue = http://www.mamicode.com/2
case "3", "?", "三", "?":
possibleIntegerValue = http://www.mamicode.com/3
case "4", "?", "四", "?":
possibleIntegerValue = http://www.mamicode.com/4
default:
break
}
if let integerValue = http://www.mamicode.com/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,是否是Latin, Arabic, Chinese, 或者 Thai 四种语言中的1至4的中的一个数字.如果匹配到了,switch的case语句就会设置一个Int?类型的可选变量 possibleIntegerValue来处理对应的值.
在switch语句执行完之后,代码中使用可选绑定来确定这个值是否找到.变量possibleIntegerValue有一个隐式初始化的nil值,因此如果可选绑定能够判定成功,possibleIntegerValue变 量在switch中的四个case必须设置一个实际的值.
上面代码例子中,罗列出所有可能的字符是不实际的.因此,deafult的case语句处理所有不匹配的情况,default的case没有执行任何操作,只是使用了break语句来结束switch执行.
Fallthrough (降落)
在Swift中,switch语句里,不会从一个case执行后再处理后面的一个case,一直到底部case.相反地,整个switch语句在第一个匹配的case完成之后就会结束执行,在C语言的switch中, 通过给每个case中插入break来防止这种掉落执行.Swift避免这种默认的降落执行是为了更加准确和可预见性,这样可以避免错误的执行多个case.
如果你真的需要像C语言那也顺序降落的执行case,你可以使用关键字fallthrough.
下面的代码例子使用关键字fallthrough来创建一个数字的文本描述:
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.”
注意点:
关键字fallthrough不会检测switch的case条件,它仅降落的执行.像C语言中的那样,从一个case代码执行完后,直接执行下一个case代码块.