我们并不希望只能写出逐行线性执行的程序。因为代码和人生一样,总会出现岔路口,我们常常需要在岔路口上做出抉择,左边还是右边?。对于人生的选择,swift可没提供什么帮助,但如果在程序当中做选择,swift可以已经为程序员们做好了准备。
1、if else分支选择
在程序设计的过程中,我们常常需要让一段代码在一定的条件下才执行。这时候我们就可以选择使用if关键字。我们先看一下if else关键字的语法描述。
首先是if关键字,后面是一个条件表达式,如果条件表达式为真,则执行第一段代码,否则执行第二段代码。使用ifelse可以轻松实现一个二元的分支选择。我们看一个简单的例子,在两个数中,选择一个大的打印输出。
var x = arc4random_uniform(100) // x为100以内的随机数
var y = arc4random_uniform(100) // y为100以内的随机数
if x > y {
print(x)
} else {
print(y)
}
其实我们通过if else的组合可以生成更复杂的,就像这样的.
if x > y {
print(x)
} else if x == y {
print(x)
} else {
print(y)
}
这种冗长的表达方式并不是一种最好的选择,我们可以使用switch关键字来实现多路分支分支,不但在会产生更易读的代买结构,更重要的是switch可以提供更强劲的 模式匹配 能力。关于switch的模式匹配,可以看另外一篇内容 switch与模式匹配
2、switch case分支选择
switch可以帮我们做两个重要的工作,一个是描述所有的分支结构,另外一个是通过模式匹配,实现分支选择,我们可以认为if是通过条件表达式来进行分支选择的,而switch则是通过模式匹配进行分支选择,当然这并不是说switch不可以使用条件表达式哦,可以看另外一篇内容switch与模式匹配来了解switch如何使用条件表达式。我们先看下一switch的语法表达式。
匹配对象按照顺序依次与条件分支进行匹配,直到遇到一条可以匹配成功的分支后,执行该分支对应的代码。当代码执行完成以后,正常的流程就结束了。
let number = 3
switch number {
case 1:
print("Monday")
case 2:
print("Tuesday")
case 3:
print("Wednesday")
case 4:
print("Thursday")
case 5:
print("Friday")
case 6:
print("Saturday")
case 7:
print("Sunday")
default:
print("error")
}
这是一个非常简单的例子,把一个整数转化为星期的单词描述。其中常量 number 就是匹配对象。依次与每个分支进行匹配,最后执行print("Wednesday")后,switch语句结束。
swift默认为每个case语句添加了break,一但匹配成功并执行完分支对应的代码后,流程就会被break结束掉,如果我们希望无论是否匹配成功都要一次执行每个分支的匹配,那么我们可以使用fallthrough关键字来实现。
let number = 3
switch number {
case 3:
print("Monday")
fallthrough
case 4:
print("Tuesday")
fallthrough
default:
print("error")
}
通过fallthrough,number会依次与每一个分支条件进行匹配,尽管第一个分支条件就已经完成匹配了。
网友评论