
リストをループさせるのはfor-in文でいいと思うんだけど、forEach?ていうのもあるの?



そうだね、forEachでもリストを繰り返すことはできるよ!forEachはfor-in文と違って構文でなくリストが持つ関数なんだ。
ここではDartでリストをループする手法のひとつ、forEachについて解説していきます!
Dartのfor-in文についてはこちらをご覧ください。
【Dart】forEachメソッドとは



リストの持つメソッドってaddやinsertとかと同じようなもの?



そう!リスト自体がもつ機能だね。いままではこんな風にfor-in文でリストを回していたね。





うーん、我ながら完全!完璧!美しいコードだぁ!



じゃあこれをforEachで書き換えてみようか!





ぬぉ!全く違う書き方だ!



リストのメソッドだからリストの後ろにドットをつなげて書くんだね。
細かい書き方をこれから解説するね。
【Dart】forEachメソッドの書き方・使い方
DartにおけるforEachメソッドの書き方はこのようになります。
リスト.forEach(匿名関数);



ととと、匿名関数ってなんやねーん!



そういうと思った!匿名関数の部分を紐解くとこんな感じになるよ!
リスト.forEach((要素の入る変数){
// 繰り返す処理
});



なんだか括弧がいっぱいだね。



ラムダ式で書けばさらにすっきりできるよ。
リスト.forEach((要素の入る変数) => 繰り返す処理);



いやラムダ式ってなんやねんそんなもん知らないんだがさっきと全然違うし何がなんだかわからないしよくわからないものどんどん畳みかけられても困るし意味わかんないしお腹減るし…。



お、落ち着いて…。ラムダ式に関しては別記事で解説予定だよ。



はじめのうちはラムダ式を使わない書き方でやっていくのがいいんじゃないかな。
先ほどのサンプルコードを説明していきます。


まずリスト「kaumono」を宣言しています。
リスト「kaumono」に「.forEach」とつなげてメソッドを呼び出します。その中に匿名関数(ラムダ式)を書くことになります。
このケースの場合、最初の「(k)」ではリストの要素が入る任意の変数を宣言します。
そこに続く「{}」の中に繰り返す処理を書きます。この中で先ほど宣言した変数「k」を扱うことができます。
「k」には1周目には「ポテチ」、2周目は「チョコ」、とリストの要素が順番に入り、最後の「ガム」まで繰り返します。つまりこのケースでは5周ループすることになります。
これをラムダ式を使って書いた場合はこのようになります。





だからラムダ式やめろって…。



(どんだけラムダ式が嫌いなんだ…。)
【Dart】forEachとfor-inの違いは?



なんかすっきり書けそうだしfor-in使わなくてもforEachでもいいんじゃない?



forEachにはいろいろ制約があるから使い分けが必要だね。
- breakやcontinueといった途中でループを抜ける処理が使えない
- リストに対しての変更はできない



なるほど!途中で抜けたりすることがforEachではできないんだね。



個人的な使い分けとしては、基本的にはfor-in文を使って、比較的簡単な処理で完結に書きたいときはforEachメソッドを使うのがいいんじゃないかな!
forEachを使ってリスト操作をすっきり書こう!



リスト操作の方法はひとつじゃないんだねぇ。



そうだね!はじめはどれを使っていいかわからなくなるかもしれないけど、どちらも理解しておくとコーディングの幅が広がるかもね。



よ~し、これで繰り返し処理のバリエーションが増えたぞぃ!
コメント