注重我,每天同享一个关于 iOS 的新知识
前语
在 swift 开发中,用来循环的方法有许多中,比如最常用的 for
循环、高阶函数 forEach
和 repeat
,尽管这些方法看起来类似,但仍是有差异的。
让我们一一回忆一下它们,看看什么场景更适合运用哪一个。
for 循环
for
循环应该是所有编程言语中最出名的迭代方法,它在 Swift 中也称为 for-in
循环:
- 比如循环 0 – 3 这个规模:
fornumin0...3{
print(num)
}
//0
//1
//2
//3
如果不需要序列中的每个值,可以经过运用下划线代替变量名称来疏忽这些值:
for_in0...3{
print("iOS新知")
}
//iOS新知
//iOS新知
//iOS新知
0...3
代表 0、1、2、3,还可以运用半开规模运算符 ( ..< ) 包括下限但不包括上限,0..<3
代表 0、1、2
- 对数组运用 for-in 循环:
letnames=["Anna","Alex","Brian","Jack"]
fornameinnames{
print("Hello,\(name)!")
}
//Hello,Anna!
//Hello,Alex!
//Hello,Brian!
//Hello,Jack!
- 字典也可以直接运用 for-in 循环:
letnumberOfLegs=["spider":8,"ant":6,"cat":4]
for(animalName,legCount)innumberOfLegs{
print("\(animalName)shave\(legCount)legs")
}
//catshave4legs
//antshave6legs
//spidershave8legs
forEach 循环
上面的比如也都可以用在 foreach
循环中。实际上,forEach
与 for-in
循环以相同的顺序对序列中的每个元素调用给定的闭包:
(0...3).forEach{numin
print(num)
}
//0
//1
//2
//3
letnames=["Anna","Alex","Brian","Jack"]
names.forEach{namein
print("Hello,\(name)!")
}
//Hello,Anna!
//Hello,Alex!
//Hello,Brian!
//Hello,Jack!
letnumberOfLegs=["spider":8,"ant":6,"cat":4]
numberOfLegs.forEach{(animalName,legCount)in
print("\(animalName)shave\(legCount)legs")
}
//catshave4legs
//antshave6legs
//spidershave8legs
for-in 和 forEach 的差异
-
break
和continue
两个退出循环的关键字在 forEach 中不可用 -
在 forEach 中运用 return 关键字,只会退出其时循环,不会退出外层的函数
关于 forEach
的底层完结可以参阅之前的文章 Foundation 中的高阶函数是怎样完结的
与 forEach
不同的是,for-in
还可以跟 where
关键字一起运用,比如,在一个数字区间的循环中,我只想打印偶数:
fornumberin0...9wherenumber.isMultiple(of:2){
print(number)
}
//0
//2
//4
//6
//8
While 循环
While 循环虽然不常用,但它的特点非常显着,在指定条件下循环,在某些场景下非常有用。
比如我们有个变量为数字 0,先判别是否小于 3,然后每次循环都 + 1,直到小于 3 停止:
varnumber=0
whilenumber<3{
print(number)
number+=1
}
//0
//1
//2
Repeat while 循环
while
循环的另一种变体 repeat - while
循环,它和 while
循环的首要差异在于,在判别循环条件之前,repeat
循环会先实行一次循环块。然后继续重复循环,直到条件为 false
,也就是说 repeat
循环不论条件怎么至少实行一次。
在 oc 言语和其他编程言语中,这个方法叫 do – while 循环
varnumber=0
repeat{
print(number)
number+=1
}while(number<3)
//0
//1
//2
这儿每天同享一个 iOS 的新知识,快来注重我吧
本文同步自微信群众号 “iOS新知”,每天按时同享一个新知识,这儿仅仅同步,想要及时学到就来注重我吧!