pascalabcnet/PABCNetHelp/LangGuide/Operators/var_statement.html

87 lines
3.6 KiB
HTML

<html>
<head>
<object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
<param name="Keyword" value="Âíóòðèáëî÷íîå îïèñàíèå ïåðåìåííîé">
<param name="Keyword" value="Îïåðàòîð îïèñàíèÿ ïåðåìåííîé">
<param name="Keyword" value="Àâòîâûâåäåíèå òèïà ïðè îïèñàíèè">
</object>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title></title>
<link rel="StyleSheet" href="../../default.css">
</head>
<body>
<H1>Îïåðàòîð îïèñàíèÿ ïåðåìåííîé</H1>
<p>Â <b>PascalABC.NET</b> ìîæíî îïèñûâàòü ïåðåìåííûå âíóòðè
<a href="beginend.html">ñîñòàâíîãî îïåðàòîðà</a> begin-end â
ñïåöèàëüíîì îïåðàòîðå îïèñàíèÿ ïåðåìåííîé. Òàêèå îïèñàíèÿ íàçûâàþòñÿ âíóòðèáëî÷íûìè. </p>
<p>Âíóòðèáëî÷íîå îïèñàíèå èìååò îäíó èç ôîðì:</p>
<blockquote>
<b><code>var </code></b><code class="codeit"> ñïèñîê èìåí</code><code>:</code><code class="codeit">
òèï</code><code>;</code></blockquote>
<p class="pabcmain">èëè</p>
<blockquote>
<b><code>var </code></b> <code class="codeit">èìÿ</code><code>:</code><code class="codeit">
òèï </code><code>:=</code><code class="codeit"> âûðàæåíèå</code><code>;</code>
</blockquote>
<p class="pabcmain">èëè</p>
<blockquote>
<b><code>var </code></b> <code class="codeit">èìÿ</code><code>:</code><code class="codeit">
òèï </code><code>=</code><code class="codeit"> âûðàæåíèå</code><code>;</code>
<code>// Äëÿ ñîâìåñòèìîñòè ñ Delphi </code>
</blockquote>
<p class="pabcmain">èëè</p>
<blockquote>
<b><code>var </code></b> <code class="codeit">èìÿ </code><code>:=</code><code class="codeit">
âûðàæåíèå</code><code>;</code>
</blockquote>
<p class="pabcmain">Èìåíà â ñïèñêå ïåðå÷èñëÿþòñÿ ÷åðåç çàïÿòóþ. Íàïðèìåð:</p>
<blockquote>
<code><b>begin<br>
&nbsp; var </b>a1,a2,a3: integer;<br>&nbsp; <b>var </b>n: real := 5;&nbsp; <br>
&nbsp; <b>var</b> s := ' ';<b> <br>
&nbsp; </b>...<b><br>
end</b>.</code>
</blockquote>
<p class="pabcmain"> ïîñëåäíåì ñëó÷àå òèï ïåðåìåííîé àâòîâûâîäèòñÿ ïî òèïó
âûðàæåíèÿ â ïðàâîé ÷àñòè. Àâòîâûâåäåíèå òèïà àêòèâíî èñïîëüçóåòñÿ ïðè
èíèöèàëèçàöèè ïåðåìåííîé âûçîâîì êîíñòðóêòîðà èëè ôóíêöèè. âîçâðàùàþùåé îáúåêò:</p>
<blockquote>
<code><b>begin<br>
&nbsp; var</b> l&nbsp;:= new List&lt;integer&gt;; <br>&nbsp; <strong>var</strong> a :=
Seq(1,3,5); // òèï a âûâîäèòñÿ ïî òèïó âîçâðàùàåìîãî çíà÷åíèÿ Seq: array of
integer<br>
<b>end</b>.</code>
</blockquote>
<h2>Êîðòåæíîå ïðèñâàèâàíèå ñ îïèñàíèåì ïåðåìåííûõ</h2>
<p>Êîðòåæíîå ïðèñâàèâàíèå (ðàñïàêîâêó êîðòåæà â ïåðåìåííûå) ìîæíî ñîâìåùàòü ñ îïèñàíèåì ïåðåìåííûõ:</p>
<blockquote>
<code>var t := (1,2);<br>(<strong>var </strong>a,<strong> var </strong>b) := (1,2);</code></blockquote>
<p>èëè</p>
<blockquote>
<code><strong>var</strong> (a,b) := (1,2);</code></blockquote>
<p>Ðàñïàêîâêà êîðòåæà â ïåðåìåííûå ÷àñòî èñïîëüçóåòñÿ ïðè âîçâðàùåíèè ôóíêöèåé
êîðòåæà:</p>
<blockquote>
<code><strong>function</strong> SP(a,b: real) := (a*b,2*(a+b)); </code>&nbsp;<br>
...<br>
<code><strong>var</strong> (S,P) := SP(2,3); </code>
</blockquote>
<h2>Èíèöèàëèçàöèÿ ëÿìáäà-âûðàæåíèåì</h2>
<p>Àâòîâûâåäåíèå òèïà ïðè îïèñàíèè íåâîçìîæíî ïðè èíèöèàëèçàöèè ïåðåìåííîé
<a href="../FuncProgramming/lambdas.html">ëÿìáäà-âûðàæåíèåì</a>:</p>
<blockquote>
<code>// <b>var</b> f&nbsp;:= x -&gt; x*x; // òàê íåëüçÿ!<br><strong>var</strong>
f : Func&lt;integer,integer&gt; := x -&gt; x*x; </code>
</blockquote>
<p>Âíóòðèáëî÷íûå îïèñàíèÿ èñïîëüçóþòñÿ ÷òîáû íå çàõëàìëÿòü ðàçäåë îïèñàíèé
îïèñàíèåì âñïîìîãàòåëüíûõ ïåðåìåííûõ. Êðîìå ýòîãî, âíóòðèáëî÷íûå îïèñàíèÿ
ïîçâîëÿþò ââîäèòü ïåðåìåííûå èìåííî â òîò ìîìåíò êîãäà îíè âïåðâûå
ïîòðåáîâàëèñü. Îáà ýòèõ ôàêòîðà ñóùåñòâåííî ïîâûøàþò ÷èòàåìîñòü ïðîãðàììû.</p>
</body>
</html>