Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

For Each...Next

配列またはコレクションの各要素ごとに、一連の文を繰り返します。

Synopsis

For Each element In group
    [statements]
    [Exit For]
    [statements]
Next [element]

引数

For Each...Next 文の構文は、以下の部分で構成されています。

element コレクションまたは配列の要素の繰り返しに使用する変数。コレクションの場合は、要素に Variant 変数、汎用オブジェクト変数、または特定のオブジェクト変数のみを指定できます。配列の場合は、要素に Variant 変数のみを指定できます。
group コレクションまたは配列のオブジェクトの名前。
statement グループの各項目に対して実行する単独または複数の文。

概要

group に 1 つでも要素があれば、For Each ブロックが始まります。一度ループが始まると、ループ内のすべての文が group の最初の要素に対して実行されます。group にまだ要素がある限り、ループの文はそれぞれの要素に実行され続けます。group にそれ以上要素が存在しない場合、ループは終了し、Next 文の後に続く文で実行を継続します。

Exit For は、終了するための補助的な手段であり、For Each...Next または For...Next 制御構造内でのみ使用できます。Exit For 文は、ループの任意の場所にいくつでも配置することができます。Exit For は、条件の評価に使用されることが多く (例えば If...Then)、制御を Next の直後の文に渡します。

他の For Each...Next ループに、For Each...Next ループを 1 つ配置することで For Each...Next ループを入れ子にできます。ただし、各ループの要素は一意である必要があります。

For Each と Split 関数

Split 関数は、 For Each...Next 文の group 引数として直接使用することはできません。まず、Split の返り値を配列変数に割り当てる必要があります。次に、この配列変数を For Each...Next 文の group 引数として指定することができます。

以下の例は、For Each...Next 文の使用法を示しています。

Erase ^RandomData
 
' Generate some random nodes
For i =  65 to 90
  If Rnd(i) > .5 Then
    ^RandomData(Chr(i),"subnode")="data"
  Else
    ^RandomData(Chr(i))="data"
  End If
Next
 
PrintLn "Traverse forwards"
 
For each k1 in ^RandomData
  PrintLn k1
  For each k2 in ^RandomData(k1)
    Print k1,vbTAB,k2
    If Exists(^RandomData(k1,k2)) and vbHasValue Then
      Print " = ",^RandomData(k1,k2)
    End If
    PrintLn
  Next
Next

メモ

Next 文の要素を省略しても、含んでいるかのように実行が継続されます。Next 文が対応する For 文より前にあると、エラーが発生します。

関連項目

FeedbackOpens in a new tab