TCL / TK:我应该用于foreach还是foreach?

时间:2018-10-24 15:49:42

标签: for-loop foreach tcl

我想遍历三个列表,以便评估列表中变量的每个排列。我目前有一个for循环和两个嵌套的for循环,但是我想知道是否可以使用foreach来达到相同的效果?但是,我不太清楚foreach的语法。 (可能是因为我不确定如何/何时使用foreach)。

这是我当前的代码块。可以将其写为foreach吗?

set list1 {a b c}
set list2 {red blue green}
set list3 {dogs cats chickens}

for {set i 0} {$i < [llength $list1]} {incr i} {
   for {set j 0} {$j < [llength $list2]} {incr j} {
      for {set k 0} {$k < [llength $list3]} {incr k} {
         set alpha [lindex $list1 $i]
         set color [lindex $list2 $j]
         set animal [lindex $list3 $k]
         puts "$alpha $color $animal"
      }
   }
}

1 个答案:

答案 0 :(得分:4)

在遍历列表时,可以使用foreach而不是for,并且不需要索引,而需要列表本身。例如,您可以使用以下代码代替当前循环:

foreach alpha $list1 {
   foreach color $list2 {
      foreach animal $list3 {
         puts "$alpha $color $animal"
      }
   }
}

请查看manual on foreach