for in だったりForEachだったり、なんか使い勝手の違いか?と思いきや、場合によって使えたり使えなかったりなんでよ?って思うわけですが。viewで使える使えないの違いだったり。念の為メモ
ForEachはSwiftUI専用でViewをループさせる目的で利用
これを知らなかったんですね。他のfor inをbodyに書いてエラーが出てなんでやねん!って思ってました。
これは、ライフサイクルも管理されていて、配列の中身が変わった場合も再レンダリングできる
view専用のループらしいです。
なのでこれだけ特別です。唯一Viewで使えるものです。
for .. in
要素を取り出し、変数に格納してぐーるぐるループするやつ
for child in children{
print(child)
}
while ..
条件を満たした間はずっとぐるぐるループ。
永久ループに要注意
var count = 0
while count < 5{
print(count)
count+=1
}
//5になったらとまる
repeat...while
1回は実行されるループ。
条件判定が最後にあるので、1回は実行される
var count = 0
repeat {
print("実行されました: \(count)")
count += 1
} while count < 3
配列の高階関数
配列にくっつけて使えるループ。
ループして、何をするか?によって選択が異なる
forEach
配列をループでクロージャの中で実行できる。
ちな、途中抜けはできない(breakとか)
let numbers = [1, 2, 3, 4, 5]
numbers.forEach { number in
print(number)
}
map
クロージャの中で処理し、新しい配列を生成する
let numbers = [1, 2, 3, 4, 5]
// 各要素を2倍にする
let doubledNumbers = numbers.map { $0 * 2 }
print(doubledNumbers)
//出力結果
//[2, 4, 6, 8, 10]
filter
条件にマッチする配列を返すことで、新しい配列を生成する。
検索のような使い方になるが、ループである以上、fullscanであることに注意
let numbers = [1, 2, 3, 4, 5]
// 偶数の要素だけを抽出する
let evenNumbers = numbers.filter { $0 % 2 == 0 }
print(evenNumbers)
//出力結果
//[2, 4]