同類型的泛型集合:
在集合的元素類型相同(比如上面的數(shù)組是String類型)的情況下,兩者遍歷效果相同,方便、敏捷,我們可以隨意選用。
不同類型元素的集合:
在集合的元素類型不相同(比如上面的數(shù)組是Int和String類型)的情況下,兩者遍歷效果相同,方便、敏捷,我們可以也隨意選用。
return關(guān)鍵字
在使用return關(guān)鍵字的時候,很明顯,for in中是當(dāng)符合當(dāng)前執(zhí)行語句時,程序直接終止到此并返回, 比如上面的元素"4"、"5"、"Hello World"沒有被執(zhí)行;而forEach中是當(dāng)符合當(dāng)前執(zhí)行語句時,程序跳過本次判斷繼續(xù)執(zhí)行, 比如上面的元素"4"、"5"、"Hello World"被執(zhí)行。
continue關(guān)鍵字
在使用continue關(guān)鍵字的時候,for in可以正常遍歷并且執(zhí)行,而且continue的作用是跳出本次循環(huán),不影響后面的執(zhí)行; 而在forEach中,swift是不允許這樣執(zhí)行的,報錯的原因是說continue只允許出現(xiàn)在循環(huán)語句中,也就是說不能使用在forEach的closure中。
break關(guān)鍵字
在break關(guān)鍵字中,對于for in來說是可以的,跳出本層循環(huán),也就是for循環(huán),然后繼續(xù)執(zhí)行后面的程序; 對于forEach來說,同continue關(guān)鍵字的效果一樣,swift不允許這樣使用,原因說的是break只能用于循環(huán)語句或switch語句,break會退出本層循環(huán)語句
小結(jié):
for in 能使用 return、break、continue關(guān)鍵字,forEach不能使用 break、continue關(guān)鍵字
for in 和 forEach 在 return關(guān)鍵字 的使用上有著本質(zhì)的區(qū)別
一般情況下,兩者都可通用,都方便、敏捷
for in 使用范圍比 forEach更廣