2018-02-05 17:22:04 +03:00
|
|
|
|
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
<html>
|
|
|
|
|
<head>
|
|
|
|
|
<title>foreach</title>
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
<body>
|
|
|
|
|
<h1>foreach</h1>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p> Команда цикла по элементам одного или нескольких списков.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<h2><a name=СИНТАНСИС></a>СИНТАКСИС</h2>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<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>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<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>.
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</p>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p> В общем случае в команде может быть указано несколько списков
|
|
|
|
|
значений (например, <em>list1</em> и <em>list2</em>), и каждый из
|
|
|
|
|
них может быть связан с одной переменной или со списком
|
|
|
|
|
переменных цикла (например, <em>varlist1</em> и
|
|
|
|
|
<em>varlist2</em>). Во время каждой итерации переменные каждого
|
|
|
|
|
списка переменных принимают значения последовательных элементов
|
|
|
|
|
соответствующего списка значений. Значения из списков значений
|
|
|
|
|
используются последовательно от первого до последнего, и каждое
|
|
|
|
|
значение используется только один раз. Общее число итераций
|
|
|
|
|
выбирается таким, чтобы использовать все значения из всех
|
|
|
|
|
списков значений. Если список значений не содержит достаточного
|
|
|
|
|
числа значений для всех связанных с ним переменных цикла, вместо
|
|
|
|
|
недостающих элементов используются пустые значения.
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</p>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<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>.
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</p>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p> Команда <strong>foreach</strong> возвращает пустую строку.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<h2><a name=ПРИМЕРЫ></a>ПРИМЕРЫ</h2>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p> В цикле используются переменные цикла i и j для цикла по
|
|
|
|
|
элементам одного списка </p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
<pre>
|
|
|
|
|
set x {}
|
|
|
|
|
foreach {i j} {a b c d e f} {
|
2018-02-05 17:22:04 +03:00
|
|
|
|
lappend x
|
2015-10-19 13:27:31 +03:00
|
|
|
|
}
|
|
|
|
|
</pre>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>В результате величина x равна "a d c f e".</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>При вычислении цикла используются три итерации.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p> В цикле переменные цикла i и j используются для различных
|
|
|
|
|
списков значений. </p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
set x {}
|
|
|
|
|
foreach i {a b c} j {d e f g} {
|
2018-02-05 17:22:04 +03:00
|
|
|
|
lappend x
|
2015-10-19 13:27:31 +03:00
|
|
|
|
}
|
|
|
|
|
</pre>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>В результате величина x равна "a d b e c f {} g". </p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>При вычислении цикла используются четыре итерации.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Обе предыдущие формы скомбинированы в следующем цикле</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
set x {}
|
|
|
|
|
foreach i {a b c} {j k} {d e f g} {
|
2018-02-05 17:22:04 +03:00
|
|
|
|
lappend x
|
2015-10-19 13:27:31 +03:00
|
|
|
|
}
|
|
|
|
|
</pre>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>В результате величина x равна "a d e b f g c {} {}".</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p> При вычислении цикла используются три итерации.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</body>
|
|
|
|
|
</html>
|
2018-02-05 17:22:04 +03:00
|
|
|
|
|