for in と forEachの使い方を忘れていた。。。
アプトプットも兼ねて自分用にまとめてみます。
よく使う書き方
for i in 0..<5 {
print(i) // 0~4
}
for i in (0..<5).reversed() {
print(i) // 4~0
}
let arr = ["a", "b", "c", "d"]
for i in 0..<arr.count {
print(arr[i]) // a, b, c, d
}
for i in arr {
print(i) // a, b, c, d
}
arr.forEach {
print($0) // a, b, c, d
}
Array(0..<arr.count).forEach {
print(arr[$0]) // a, b, c, d
}
for in と forEachの違い
結論から言うと、
・for in文ではbreakでループ処理を抜けることができる
・for each文はreturnやbreakなどでループ処理を終わらせて抜けることができない
以下、Playgroundでコードをいじってみました
var numbers = [0, 1, 2, 3, 4, 5]
//for in
for num in numbers {
if num == 3 {
break
}
print(num) //0 1 2
}
// forEach
numbers.forEach {
if $0 == 3 {
return
}
print($0) //0 1 2 4 5
}
へえ、forEach文の中身はあくまで関数のため、returnはループ内の関数を抜けるだけでループ自体は継続するんですね。
ちなみに上のコードにおいて、for inの方でreturnを書いたり、forEachの方でbreakをかくとエラーが出て実行できません。
補足しておくと、
breakとreturnのざっくりとした違い
・break・・・ループをその場で終了させる。
・return・・・関数内の処理を抜ける。