【总】一般情况下,两者都可通用,都方便、敏捷。但for in
使用范围比array.forEach
更广。
1、同是遍历:都可通用
for..in..
let array = ["1", "2", "3", "4", "5"]
for element in array {
print(element)
}
打印结果: 1, 2, 3, 4, 5
array.forEach
let array = ["1", "2", "3", "4", "5"]
array.forEach { (element) in
print(element)
}
array.forEach { element in
print(element)
}
array.forEach {
print($0)
}
打印结果: 1, 2, 3, 4, 5
2、return关键字在其中的不同
for..in..
let array = ["1", "2", "3", "4", "5"]
for element in array {
if element == "3" {
return
}
print(element)
}
打印结果:1, 2,
for in中是当符合当前执行语句时,程序直接终止到此并返回,
array.forEach
let array = ["1", "2", "3", "4", "5"]
array.forEach { (element) in
if element == "3" {
return
}
print(element)
}
打印结果:1, 2, 4, 5, 省略了“3”,
而forEach中是当符合当前执行语句时,程序跳过本次判断继续执行,
3、continue关键字在其中的不同, 不能在array.forEach
中使用
for..in..
let array = ["1", "2", "3", "4", "5"]
for element in array {
if element == "3" {
continue
}
print("element is \(element)")
}
打印结果:
element is 1
element is 2
element is 4
element is 5
array.forEach
不能使用continue关键字
continue只允许出现在循环语句中。
对于for in可以正常遍历并且执行,而且 continue的作用是跳出本次循环,继续后面的执行
对于array.forEach来说,不能使用。
4、break关键字在其中的不同, 不能在array.forEach
中使用
for..in..
let array = ["1", "2", "3", "4", "5"]
for element in array {
if element == "3" {
break
}
print("element is \(element)")
}
打印结果:
element is 1
element is 2
array.forEach
不能使用break关键字
break只能用于循环语句或switch语句
对于for in来说是可以的,break关键字跳出最外层。
对于array.forEach来说,不能使用。
扩展
可以使用enumerated()方法 例如:
Array.enumerated().forEach { (offset, element) in
………………//offset就是下标 element是数组内对象
}
另外map、filter等方法也同样适用
还可以结合reversed()等方法灵活运用
网友评论