[Swift]ForEachでIndexを使用する方法
概要
SwiftのForEachでListの中身をぶん回してる時にIndexが欲しくなったので、使い方を調べた。その忘備録。
どうなったのか
array.enumerated().forEach( { ( index, item ) in
〜行いたい処理
インデックスはindex
中身はitem〜
} )
こんな感じにするとうまくいくらしいです。あと比較的コードが読みやすかった。
どうゆう仕組みなの
私が聞きたい
ので、色々と調べてみました
とりあえず引っかかるのが enumerated()って何??? というところだと思います。
分からないことはとりあえず公式に聞いてみよう精神で Apple Developer Documentation ←ここを読んでみました。
とりあえずは「連続した要素から、要素xと連続した数字nで連続したペア(n, x)を作ってくれる」みたいです。
ここで注意したて欲しいのがnは別に各要素のIndexではないみたいです。ただ単に0から始まる連続した数字なだけみたいです。
なので、ArrayやContiguousArrayのような0から始まる整数のIndexを使ってるCollectionでのみIndexとして使えるみたいです。
Collectionの要素とIndexを反復して使いたい場合はzip(_:_:)を使ってねって書いてありました。僕の英語スキルと技術レベルが低すぎて何をいってるのかよくわかりませんすみません。とりあえず( ; _ ; )に見えてます。
とりあえず、enumerated()では「要素のArrayを(整数, 要素)のArrayに変換してる」って感じっぽいですね。それで、整数は要素が変わるごとに1増えてくみたいな。
つまり、今回のコードでは、「arrayの中身をenumerated()で(整数, 要素)に変換して、その整数をIndexとして扱っている」ってことみたいです。
どこを調べた
Getting the index in ForEach | Apple Developer Forums←ここに書いてあった。
いろいろな人がいろいろな方法を提案していました。読んでみるといいかもです。
まとめSwiftむずかしい
1. 分からない
2. 調べる
3. 分からないが増える ←イマココ