For Each...Next ステートメントは、一覧に指定された要素に繰り返します。
For Each ステートメントは以下を指定します。
次の構文が For Each...Next ステートメントに適用されます。
For Each <LoopControlVariable> In <expression> [statements] Next [expression]
識別子でループ コントロール変数を指定します。列挙子式は、一覧または列挙子関数と評価される必要があります(下記の TreeIterator を参照)。ループ コントロール変数は、一覧内の項目と対応するタイプである必要があります。ネストされた For Each...Next ステートメントは、それぞれ独自のループ コントロール変数を使用する必要があります。
列挙子式はループの開始前に評価されます。各反復の開始時に、一覧内の次の要素がループ コントロール変数に割り当てられます。一覧内のすべての要素が評価されるとループが終了します。そうでない場合は、ステートメント ブロックが実行されます。
典型的な For Each...Next ループの例を以下に示します。
Rule total As Integer
Dim counter As Integer = 0
Dim numList As list = {0, 2, 4, 6, 8, 10}
For Each counter in numList
total = total + counter
printValue("Total = " + stringValue(total) + _
" Counter = " + stringValue(counter))
Next
End Rule
Output:
"Total = 0 Counter = 0"
"Total = 2 Counter = 2"
"Total = 6 Counter = 4"
"Total = 12 Counter = 6"
"Total = 20 Counter = 8"
"Total = 30 Counter = 10"
ループのボディで Exit For ステートメントを使用することで、For Each...Next ループを終了することができます。