<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>foreach</title> </head> <body> <h1>foreach</h1> <p> Команда цикла по элементам одного или нескольких списков.</p> <h2><a name="СИНТАНСИС"></a>СИНТАКСИС</h2> <pre> <strong>foreach</strong> <em>varname</em> <em>list</em> <em>body</em> <strong>foreach</strong> <em>varlist1</em> <em>list1</em> ?<em>varlist2</em> <em>list2</em>...? <em>body</em> </pre> <h2><a name="ОПИСАНИЕ"></a>ОПИСАНИЕ</h2> <p> Команда организует выполнение цикла, в котором переменные цикла последовательно принимают все значения из списков значений. В простейшем случае имеется одна переменная цикла <em>varname</em> и один список значений <em>list</em> для присвоения переменной цикла. Аргумент <em>body</em> есть скрипт Tcl. Для каждого элемента списка <em>list</em>, по очереди с первого до последнего, <strong>foreach</strong> присваивает содержимое очередного элемента списка переменной <em>varname</em> и затем вызывает интерпретатор Tcl для исполнения <em>body</em>. </p> <p> В общем случае в команде может быть указано несколько списков значений (например, <em>list1</em> и <em>list2</em>), и каждый из них может быть связан с одной переменной или со списком переменных цикла (например, <em>varlist1</em> и <em>varlist2</em>). Во время каждой итерации переменные каждого списка переменных принимают значения последовательных элементов соответствующего списка значений. Значения из списков значений используются последовательно от первого до последнего, и каждое значение используется только один раз. Общее число итераций выбирается таким, чтобы использовать все значения из всех списков значений. Если список значений не содержит достаточного числа значений для всех связанных с ним переменных цикла, вместо недостающих элементов используются пустые значения. </p> <p> Внутри скрипта <em>body</em> можно использовать команды <a href="break.html"><strong>break</strong></a> и <a href= "continue.html"><strong>continue</strong></a>, аналогично команде <a href="for.html"><strong>for</strong></a>. </p> <p> Команда <strong>foreach</strong> возвращает пустую строку.</p> <h2><a name="ПРИМЕРЫ"></a>ПРИМЕРЫ</h2> <p> В цикле используются переменные цикла i и j для цикла по элементам одного списка </p> <pre> set x {} foreach {i j} {a b c d e f} { lappend x $j $i } </pre> <p>В результате величина x равна "a d c f e".</p> <p>При вычислении цикла используются три итерации.</p> <p> В цикле переменные цикла i и j используются для различных списков значений. </p> <pre> set x {} foreach i {a b c} j {d e f g} { lappend x $i $j } </pre> <p>В результате величина x равна "a d b e c f {} g". </p> <p>При вычислении цикла используются четыре итерации.</p> <p>Обе предыдущие формы скомбинированы в следующем цикле</p> <pre> set x {} foreach i {a b c} {j k} {d e f g} { lappend x $i $j $k } </pre> <p>В результате величина x равна "a d e b f g c {} {}".</p> <p> При вычислении цикла используются три итерации.</p> </body> </html>