for - "For" ループ
for start test next body
for はループコマンドであり、C言語の for ステートメントと構造上似ています。start
とnext とbody 引数はTclコマンドの文字列でなければならなく、testは式文字列でなければなりません。forコマンドは最初にTclインタープリタを呼出してstart
を実行します。そして、testを式として繰り返し評価します。結果が0でなければ、Tclインタープリタを呼出してbodyを実行し、それからTclインタープリタでnextを実行します。そしてループを繰り返します。testが0と評価されるとき、このコマンドは終了します。
continueコマンドがbodyの中に呼び出されると、body
の現在の実行の残っているコマンドは全てスキップされ、処理はTclインタープリタを呼び出してnext
を実行し、testを評価することによってループを継続します。
break コマンドがbody かnext の中に呼び出されると、forコマンドは直ちに制御を返します。
break とcontinue の操作は
C 言語で相当するステートメントと似ています。for は空文字列を返します。
注意:
testは常に中括弧で囲まなければなりません。そうでないと、 for コマンドが実行をはじめる前に変数置換は行われてしまいます。それはループ本体によって行われる変数の更新が式の中で反映されなくなることを意味します。これは無限ループという結果につながる恐れがあります。
testが中括弧で括られていれば、変数置換は式が評価されるまで遅延されます(各ループの繰り返しの前)、このため変数の更新は反映される様になります。例えば、以下のスクリプトを$x<10の周りの中括弧を有りと無しで試して下さい。
for {set x 0} {$x<10} {incr x} {
puts "x is $x"
}
break, continue, foreach, while
for, iteration,
looping
Copyright © 1993 The Regents of the University of California.
Copyright © 1994-1997 Sun Microsystems, Inc.
Copyright © 1995-1997 Roger E. Critchlow Jr.
|