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インタープリタを呼び出します。
一般的な場合には、一つ以上の値のリスト ( 例えば、list1
やlist2 )が存在することができ
、そして各値リストはループ変数 ( 例えば、varlist1やvarlist2 )
のリストと関連付けられることができます。ループの各繰り返しの間に各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, iteration,
list, loop
Copyright © 1993 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.
Copyright © 1995-1997 Roger E. Critchlow Jr.
|