foreach
Имя
foreach — Итерация по всем элементам в одном или нескольких спискахСинопсис
foreach переменная список телоforeach список_переменных1 список1 ?список_переменных2 список2 ...? тело
Описание
Команда foreach реализует цикл, в котором переменные цикла принимают значения из одного или нескольких списков. В самом простом случае есть одна переменная цикла, переменная, и один список, список, представляющий собой список значений, которые необходимо присвоить переменной. Аргумент тело — это скрипт Tcl. Для каждого элемента списка список (в порядке от первого к последнему), foreach присваивает содержимое элемента переменной так, как будто использовалась команда lindex для извлечения элемента, а затем вызывает интерпретатор Tcl для выполнения тела.В общем случае может быть более одного списка значений (например, список1 и список2), и каждый список значений может быть связан со списком переменных цикла (например, список_переменных1 и список_переменных2). Во время каждой итерации цикла переменные каждого список_переменных получают последовательные значения из соответствующего списка. Значения в каждом списке используются в порядке от первого к последнему, и каждое значение используется ровно один раз. Общее количество итераций цикла достаточно велико, чтобы использовать все значения из всех списков значений. Если список значений не содержит достаточно элементов для каждой из его переменных цикла в каждой итерации, для отсутствующих элементов используются пустые значения.
Команды break и continue могут быть вызваны внутри тела, с тем же эффектом, что и в команде for. Foreach возвращает пустую строку.
Примеры
Этот цикл выводит каждое значение в списке вместе с квадратом и кубом значения: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. См. также
for, while, break, continue
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/foreach.htm
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/foreach.htm