Swift for循环,switch, while语句

时间:2020-02-23 14:44:01  来源:igfitidea点击:

在本教程中,我们将研究Swift必须提供的各种语句。
我们将主要介绍swift for 循环swift whilerepeat-whileswitch语句。
打开游乐场,让我们其中潜水。
之前我们研究了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&#039;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", "??]