## Tcl9.0.3/Tk9.0.3 Documentation > Tcl Commands > foreach

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

### NAME

foreach — 一つかそれ以上のリストの全ての要素について繰返す Iterate over all elements in one or more lists

### 構文 SYNOPSIS

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

### 説明 DESCRIPTION

foreach 命令は､一つ或はそれ以上のリストから繰返し変数(複数も可)に値を取って､繰返しを実現する｡最も簡単な場合は､繰返し変数が varname 一つであり､且つ､varname に値を代入する一個のリスト list がある場合である｡ body 引数は Tcl 記述譜である｡ foreach は､ list の各要素に就いて､恰も要素を抽出する為に使い慣れた lindex の 様に､要素の中身を(最初から最後の並び順に)､varname に代入し､次に､ body を実行する為に Tcl 解釈実行機能を呼ぶ｡ 　 The foreach command implements a loop where the loop variable(s) take on values from one or more lists. In the simplest case there is one loop variable, varname, and one list, list, that is a list of values to assign to varname. The body argument is a Tcl script. For each element of list (in order from first to last), foreach assigns the contents of the element to varname as if the lindex command had been used to extract the element, then calls the Tcl interpreter to execute body.

一般的な場合は､一つよりも多くのリストがあってもよく(譬えば､list1 と list2)､それぞれのリストが､繰返し変数のリストに対応(譬えば､varlist1 と varlist2)してもよい｡それぞれの繰返しの過程の間､それぞれの varlist は対応する list から継続的に代入される｡それぞれの list の値は､最初から最後の順で使われ､それぞれの値は一度だけ使用される｡繰返しの回数の総合計は､全ての値リストから全ての値を使うに十分な回数である｡値リストに全ての工程の全ての繰返し変数に見合う値が含まれていない時は､不足の要素については空の値が使われる｡ 　　　 In the general case there can be more than one value list (e.g., list1 and list2), and each value list can be associated with a list of loop variables (e.g., varlist1 and varlist2). During each iteration of the loop the variables of each varlist are assigned consecutive values from the corresponding list. Values in each list are used in order from first to last, and each value is used exactly once. The total number of loop iterations is large enough to use up all the values from all the value lists. If a value list does not contain enough elements for each of its loop variables in each iteration, empty values are used for the missing elements.

break か continue の状態が body の中で起動されると､for 命令の中と同じ効果を有する｡foreach は空文字列を返す｡ The break and continue statements may be invoked inside body, with the same effect as in the for command. Foreach returns an empty string.

### 用例 EXAMPLES

この繰返しでリストの中の全ての値と､自乗と三乗の値を印刷する: 　　　 This loop prints every value in a list together with the square and cube of the value:

    set values {1 3 5 7 2 4 6 8}	;# 戯れに奇数を先にする	# Odd numbers first, for fun!
    puts "Value\tSquare\tCube"	;# 見出し	# Neat-looking header
    foreach x $values {	;# 繰返して印刷する	# Now loop and print...
        puts " $x\t [expr {$x**2}]\t [expr {$x**3}]"
    }

次の繰返しは､繰返し変数として一つのリストから i と j の対を使う｡　　　 The following loop uses i and j as loop variables to iterate over pairs of elements of a single list.

    set x {}
    foreach {i j} {a b c d e f} {
        lappend x $j $i
    }
    # xの値は"b a d c f e"
    # 繰返し回数は3回
    # The value of x is "b a d c f e"
    # There are 3 iterations of the loop.

次の繰返しは､繰返し変数として二つのリストから i と j を並行に使う｡　　 The next loop uses i and j to iterate over two lists in parallel.

    set x {}
    foreach i {a b c} j {d e f g} {
        lappend x $i $j
    }
    # x の値は"a d b e c f {} g"
    # 繰返しは4回｡
    # The value of x is "a d b e c f {} g"
    # There are 4 iterations of the loop.

次の例では二つの形式が協調している｡ The two forms are combined in the following example.

    set x {}
    foreach i {a b c} {j k} {d e f g} {
        lappend x $i $j $k
    }
    # x の値は"a d e b f g c {} {}"
    # 繰返しは3回｡
    # The value of x is "a d e b f g c {} {}"
    # There are 3 iterations of the loop.

### SEE ALSO

for, while, break, continue

### KEYWORDS

foreach, iteration, list, loop
Copyright © 1993 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.