Swift for循环,switch, while语句
在本教程中,我们将研究Swift必须提供的各种语句。
我们将主要介绍swift for 循环
,swift while
,repeat-while
和switch
语句。
打开游乐场,让我们其中潜水。
之前我们研究了Swift数组。
此外,我们还将研究带Swift 4的新推出的One Sided Ranges。
Swift for循环
为了在不使用下标(索引)的情况下迭代序列,我们使用" for loop",如下所示。
var numberArray = [2,4,6,8,10] for number in numberArray { print(number) }
使用上下限带有下标的for-in循环
var numberArray = [2,4,6,8,10] for i in lowerbound...upperbound { //do something } //example : 1 var numberArray = [2,4,6,8,10] for i in 0...4 { print(numberArray[i]) }
使用封闭范围运算符(...)
,将数组从下限迭代到上限(包括两端)。
为了不包含上限而进行迭代,我们使用半角运算符(.. <)
。
下面是一个示例:
for i in 0..<4 { print(numberArray[i]) //doesn't print 10 }
注意:如果lowerbound> upperbound
,将会当机。
要以相反的顺序打印数组,我们可以使用" reversed()"函数,如下所示。
for i in (0..<4).reversed() { print(numberArray[i]) } //the below code will crash for i in 4..<0 { print(numberArray[i]) }
stride
是Swift库中的一个函数,允许我们输入起始值,结束值和偏移量值,如下所示:
//count from 1 to 10 by 1 for i in stride(from: 1, to: 10, by: 1) { print(i) } //count from 1 to 10 by 2 for i in stride(from: 1, to: 10, by: 2) { print(i) } prints: 1 3 5 7 9
忽略每个序列的值
for _ in 1...5 { print("Hello World") }
下划线有效地消除了每个序列的值。
此用法类似于while循环,可用于计算数字的幂,如下所示:
let base = 3 let power = 10 var answer = 1 for _ in 1...power { answer *= base } print("\(base) to the power of \(power) is \(answer)")
While循环
while循环遍历语句主体,直到条件变为假。
var i = 0 while i <= 5 { print(i) i = i + 1 }
注意:所有控制流语句中存在的条件,例如" while"和" for-in"循环,在Swift中是" if else",与其他语言不同的是,括号中没有包含其他语言。
满足条件时重复循环。
while循环和repeat-while循环之间的区别在于,repeat循环在检查条件之前执行主体中存在的语句。
var i = 5 repeat { print(i) i = i + 1 } while i < 5
注意:repeat-while
循环类似于C,JAVA中的do-while
循环。
switch语句
switch语句考虑一个值,并将其与几种可能的匹配模式进行比较。
下面是一个示例:
let character: Character = "a" switch character { case "a": print("The first letter of the alphabet") //this gets printed. case "z": print("The last letter of the alphabet") default: print("Some other character") }
与其他语言迅速切换语句不同,第一种情况匹配后立即完成。
他们不会遇到其他情况,也不需要明确的break语句。
为了明确地解决这些问题,需要使用" fallthrough"关键字,如下所示:
let character: Character = "a" switch character { case "a": print("The first letter of the alphabet") //this gets printed. fallthrough case "z": print("The last letter of the alphabet")//this gets printed too fallthrough default: print("Some other character") //this gets printed too }
在switch中组合多个案例Swift允许将多个case附加到switch中(用逗号分隔),如下所示。
var myInt = 0 switch myInt { case 0, 1, 2: print("zero, one or two") //this gets printed. case 3,5,7: print("three, five or seven") case 4: print("four") default: print("Integer out of range") }
可以检查切换案例中"切换值"的时间间隔匹配,以检查它们是否包含在特定范围内,如下所示:
var myInt = 5 switch (myInt) { case 0...5: print("First half") //this gets printed case 5..<10: print("Second half") default: print("Out of range") }
在上面的代码中,"上半部分"被打印出来。
尽管在这两种情况下都存在数字5,但是从第一个遇见以来就打印第一个。
第二种情况是5到10,其中不包括10。
使用where语句
var myInt = 5 switch (myInt) { case 0...5 where myInt%2==0: print("First half only even accepted") case 5..<10: print("Second half only odd accepted") default: print("Out of range") }
" where"关键字用于在案例内部添加其他条件。
单边范围
Swift 4(Swift 4)引入了一个单边范围,可自动推断出缺失范围。
下面的示例演示相同。
let stringArray = ["How", "you", "doing", "today", "??"] let lowerHalf = stringArray[..<2] //["How", "you"] let upperHalf = stringArray[2...] //["doing", "today", "??]