pascalabcnet/PABCNetHelp/LangGuide/Operators/foreach.html

87 lines
4.1 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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>
&nbsp; </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>
&nbsp; </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>
&nbsp; </code><code class="codeit">оператор</code></p>
</blockquote>
<p>В качестве контейнера может фигурировать динамический массив,
строка, множество, а также любой контейнер, удовлетворяющий интерфейсу
<code>IEnumerable</code> или
<code>IEnumerable&lt;T&gt;</code>(например, <code>List&lt;T&gt;</code>,
<code>Dictionary&lt;Key,Value&gt;</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>
&nbsp; ss: <b>set of</b> string := ['Иванов','Петров','Сидоров'];<b><br>
</b>&nbsp; a: <b>array of</b> integer := (3,4,5);<br>
&nbsp; b: <b>array</b> [1..5] <b>of</b> integer := (1,3,5,7,9);<br>
&nbsp; l := new List&lt;real&gt;;<br>
<b>begin<br>
&nbsp;
foreach</b> s: string <b>in</b> ss <b>do</b><br>
&nbsp;&nbsp;&nbsp; write(s,' ');<br>
&nbsp; writeln;<br>
<b>&nbsp;
foreach</b> x: integer <b>in</b> a <b>do</b><br>
&nbsp;&nbsp;&nbsp; write(x,' ');<br>
&nbsp; writeln;<br>
<b>&nbsp;
foreach</b> <strong>var </strong>x <b>in</b> b <b>do</b><br>
&nbsp;&nbsp;&nbsp; write(x,' ');<br>
&nbsp; writeln;<br>
<b>&nbsp;
foreach</b> <strong>var</strong> r <b>in</b> l <b>do</b><br>
&nbsp;&nbsp;&nbsp; write(r,' ');<br>
<b>end</b>.<br>
&nbsp;</code></p>
</blockquote>
<p>&nbsp;</p>
</body>
</html>