同类型的泛型集合:
在集合的元素类型相同(比如上面的数组是String类型)的情况下,两者遍历效果相同,方便、敏捷,我们可以随意选用。
不同类型元素的集合:
在集合的元素类型不相同(比如上面的数组是Int和String类型)的情况下,两者遍历效果相同,方便、敏捷,我们可以也随意选用。
return关键字
在使用return关键字的时候,很明显,for in中是当符合当前执行语句时,程序直接终止到此并返回, 比如上面的元素"4"、"5"、"Hello World"没有被执行;而forEach中是当符合当前执行语句时,程序跳过本次判断继续执行, 比如上面的元素"4"、"5"、"Hello World"被执行。
continue关键字
在使用continue关键字的时候,for in可以正常遍历并且执行,而且continue的作用是跳出本次循环,不影响后面的执行; 而在forEach中,swift是不允许这样执行的,报错的原因是说continue只允许出现在循环语句中,也就是说不能使用在forEach的closure中。
break关键字
在break关键字中,对于for in来说是可以的,跳出本层循环,也就是for循环,然后继续执行后面的程序; 对于forEach来说,同continue关键字的效果一样,swift不允许这样使用,原因说的是break只能用于循环语句或switch语句,break会退出本层循环语句
小结:
for in 能使用 return、break、continue关键字,forEach不能使用 break、continue关键字
for in 和 forEach 在 return关键字 的使用上有着本质的区别
一般情况下,两者都可通用,都方便、敏捷
for in 使用范围比 forEach更广