『foreach』文とは
コレクションのすべての要素を1つ1つ取得するときに使用する。
もくじ
1.基本構文
2.具体例
3.Unityでの使用例【子オブジェクトをすべて取得する】
基本構文
1 2 3 4 |
foreach(変数 in コレクション) { // 処理 } |
※プログラミングは基本的に、すべて半角英数字で記述します。上記では便宜上全角を使用していることをご了承ください。
コレクションの要素を1つ1つ変数に格納して、要素の数だけループが行われます。1つ目の要素を変数に入れて1周し、2つ目の要素を変数に入れて1周し・・・というように、要素の数だけループが行われます。
コレクションには、配列やリスト、辞書などが使用できます。
“continue;”を記述することで、
それ以降の処理を無視して、次のループへと進むことができます。
“break;”を記述することで、
foreach文を抜ける(終了させる)ことができます。
具体例
それでは具体例を見てみましょう。
1 2 3 4 5 6 7 8 9 |
int[] array = { 0, 1, 2, 3, 4, 5 }; foreach(int i in array) { if (i == 2) continue; else if (i == 3) break; Debug.Log(i); } |
int型の配列arrayを用意し、foreach文で配列の要素を1つ1つコンソールへと書き出す、という処理を行っています。
arrayの1つ目の要素であるarray[0]を、定義した変数 i に代入して、foreach文の中に入ります。i の値は0であるので、if文での条件分岐はスルーされ、Consoleに i の値である0が表示されます。
続いて、arrayの2つ目の要素であるarray[1]を、i に代入して、2周目に突入します。このようにarrayの要素1つ1つを読みだして、ループが行われます。
最終的にConsoleに出力されるのは「0,1」となります。
Unityでの使用例
子オブジェクトをすべて取得する処理です。
1 2 3 4 |
foreach (Transform child in parentObj.transform) { Debug.Log(child.name); } |
parentObjの子オブジェクトの名前を列挙するスクリプトになっています。
配列の要素を取得するのであれば、for文よりもforeach文を使うほうが簡単ですね。