1. 程式人生 > >tcl/tk參考——控制結構foreach

tcl/tk參考——控制結構foreach

名稱

foreach - 反覆迴圈操作一個或多個列表的每個元素

語法

foreach varname list body

foreach varlist1 list1 ?varlist2 list2 ...? body

描述

foreach命令執行一個迴圈,迴圈的變數是一個或多個列表的元素。最簡單的情況下是一個迴圈變數varname和一個列表listlist中的值一次分配給varnamebody變元是一個Tcl指令碼,對於每個list中的元素(順序是由第一個到最後一個),foreach分配元素的內容給varname,然後呼叫Tcl直譯器去執行body

一般情況下可以有多個列表,並且每個列表可以是迴圈的變數,在每次迴圈中每個varlist

變數被分配給相應的listforeach將一直迴圈執行所有列表中的值,如果在迴圈中其中一個列表的元素全部使用了,那麼在後面的迴圈中這個列表的元素就用空字串來代替。

breakcontinue可以在body中呼叫,用法和for命令相同,並且返回一個空字串。

示例

這個迴圈列印每一個列表中的數值值和數值的平方、立方
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作為迴圈變數操作列表中每一對元素:

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.

下面的迴圈使用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.

下面兩個列表合併起來:

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.