Tcl / tk: я должен использовать для или foreach? - PullRequest
0 голосов
/ 24 октября 2018

У меня есть три списка, которые я хотел бы перебрать, чтобы я оценивал каждую перестановку переменных в моих списках.В настоящее время у меня есть цикл 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 голосов
/ 24 октября 2018

Вы можете использовать foreach вместо for, когда вы перебираете список, и вам нужны не индексы, а сами элементы списка.Например, вы можете использовать следующее вместо ваших текущих циклов:

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

Пожалуйста, ознакомьтесь с руководством на foreach .

...