87 lines
4.1 KiB
HTML
87 lines
4.1 KiB
HTML
<html>
|
||
|
||
<head>
|
||
<object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
|
||
<param name="Keyword" value="foreach">
|
||
<param name="Keyword" value="in">
|
||
<param name="Keyword" value="index">
|
||
</object>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
|
||
<title></title>
|
||
<link rel="StyleSheet" href="../../default.css">
|
||
</head>
|
||
|
||
<body>
|
||
<H1>Оператор цикла foreach</H1>
|
||
<p>Оператор цикла <code><b>foreach</b></code> имеет одну из следующих
|
||
форм:</p>
|
||
<blockquote>
|
||
<p><code><b>foreach</b> </code><code class="codeit">переменная</code><code>
|
||
<b>in</b> </code><code class="codeit">контейнер</code><code> <b>[index </b>
|
||
<em>переменная</em><strong>]</strong> <b>do</b><br>
|
||
</code><code class="codeit">оператор</code></p>
|
||
</blockquote>
|
||
<p>или</p>
|
||
<blockquote>
|
||
<p><code><b>foreach</b> </code><code class="codeit">переменная</code><code>:</code><code class="codeit">
|
||
тип</code><code> <b>in</b> </code><code class="codeit">контейнер</code><code>
|
||
<b>[index </b><em>переменная</em><strong>]</strong>
|
||
<b>do</b><br>
|
||
</code><code class="codeit">оператор</code></p>
|
||
</blockquote>
|
||
<p>или</p>
|
||
<blockquote>
|
||
<p><code><b>foreach</b> <strong>var</strong> </code><code class="codeit">переменная</code><code> <b>in</b> </code><code class="codeit">контейнер</code><code>
|
||
<b>[index </b><em>переменная</em><strong>]</strong>
|
||
<b>do</b><br>
|
||
</code><code class="codeit">оператор</code></p>
|
||
</blockquote>
|
||
<p>В качестве контейнера может фигурировать динамический массив,
|
||
строка, множество, а также любой контейнер, удовлетворяющий интерфейсу
|
||
<code>IEnumerable</code> или
|
||
<code>IEnumerable<T></code>(например, <code>List<T></code>,
|
||
<code>Dictionary<Key,Value></code> и т.д.). Переменная цикла
|
||
должна иметь тип, <strong>совпадающий</strong> с типом элементов контейнера
|
||
(если контейнер удовлетворяет интерфейсу
|
||
<code>IEnumerable</code>, то это тип <code>object</code>). В последней форме
|
||
<code><strong>foreach</strong></code> тип переменной цикла автовыводится по типу элементов
|
||
контейнера.</p>
|
||
<p>Необязательная часть <code>
|
||
<b>index </b><em>переменная</em></code> вводит переменную, которая хранит на
|
||
каждой итерации индекс элемента контейнера (элементы индексируются с нуля).</p>
|
||
<p>Переменная цикла пробегает все
|
||
значения элементов контейнера и для каждого значения переменной
|
||
цикла выполняется тело цикла. Изменение переменной цикла
|
||
внутри тела цикла не меняет элементы контейнера, т.е. они доступны только на
|
||
чтение.</p>
|
||
<p>Например:</p>
|
||
<blockquote>
|
||
<p><code><b>var</b> <br>
|
||
ss: <b>set of</b> string := ['Иванов','Петров','Сидоров'];<b><br>
|
||
</b> a: <b>array of</b> integer := (3,4,5);<br>
|
||
b: <b>array</b> [1..5] <b>of</b> integer := (1,3,5,7,9);<br>
|
||
l := new List<real>;<br>
|
||
<b>begin<br>
|
||
|
||
foreach</b> s: string <b>in</b> ss <b>do</b><br>
|
||
write(s,' ');<br>
|
||
writeln;<br>
|
||
<b>
|
||
foreach</b> x: integer <b>in</b> a <b>do</b><br>
|
||
write(x,' ');<br>
|
||
writeln;<br>
|
||
<b>
|
||
foreach</b> <strong>var </strong>x <b>in</b> b <b>do</b><br>
|
||
write(x,' ');<br>
|
||
writeln;<br>
|
||
<b>
|
||
foreach</b> <strong>var</strong> r <b>in</b> l <b>do</b><br>
|
||
write(r,' ');<br>
|
||
<b>end</b>.<br>
|
||
</code></p>
|
||
</blockquote>
|
||
<p> </p>
|
||
</body>
|
||
|
||
</html>
|