foreach

ReferenceTOPKeywords

コマンド名

foreach - 1つ以上のリストのすべての要素に対するループ。

構文

foreach varname list body 
foreach varlist1 list1 ?varlist2 list2 ... body

解説

foreach コマンドはループ変数が1つ以上のリストから値を引受け、ループを実行します。最も簡単な場合は、ループ変数varnameが1つであり、varname に代入される値のリストlistも1つの場合です。body 引数はTcl のスクリプトです。list の各要素(先頭から末尾の順で)に対して、 foreach は要素を抽出するために使われる lindexコマンドと同じ、要素の中身を varname に割り当てて、body を実行するためにTclインタープリタを呼び出します。

一般的な場合には、一つ以上の値のリスト ( 例えば、list1list2 )が存在することができ 、そして各値リストはループ変数 ( 例えば、varlist1varlist2 ) のリストと関連付けられることができます。ループの各繰り返しの間に各varlistの変数は対応するlist から連続した値を割り当てられます。各list の値は先頭から末尾まで順番に使われ、各値はちょうど1度だけ使われます。ループの繰り返しの総数は、全ての値リストから全ての値を使い果たすために、十分な大きさが必要です。値リストがループ変数のための十分な要素を含まない場合、足りない要素に空の値が使われます。

forコマンドでと同じ効果で、break continue ステートメントをbody の中で呼び出すことができます。Foreachは空文字列を返します。

以下のループは i と j を単一のリスト上で要素のペアで繰り返すためのループ変数として使います。

set x {}
foreach {i j} {a b c d e f} {
    lappend x $j $i
}
# The value of x is "b a d c f e"
# There are 3 iterations of the loop.

次のループは並列に2つのリスト上に繰り返すために i と j を使います。

set x {}
foreach i {a b c} j {d e f g} {
    lappend x $i $j
}
# The value of x is "a d b e c f {} g"
# There are 4 iterations of the loop.

この2つの形式は次の例題で結合されます。

set x {}
foreach i {a b c} {j k} {d e f g} {
    lappend x $i $j $k
}
# The value of x is "a d e b f g c {} {}"
# There are 3 iterations of the loop.

参照

for, while, break, continue

キーワード

foreach, iterationlistloop


Copyright © 1993 The Regents of the University of California. Copyright © 1994-1996 Sun Microsystems, Inc. Copyright © 1995-1997 Roger E. Critchlow Jr.