73 lines
2.6 KiB
HTML
73 lines
2.6 KiB
HTML
<html><head>
|
|
<object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
|
|
<param name="Keyword" value="is">
|
|
<param name="Keyword" value="as">
|
|
</object>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
|
|
<title></title>
|
|
<link rel="StyleSheet" href="../../default.css"></head>
|
|
<body><H1>Îïåðàöèè is è as</H1>
|
|
<p>Îïåðàöèÿ <code><b>is</b></code> ïðåäíàçíà÷åíà äëÿ ïðîâåðêè òîãî, èìååò ëè
|
|
êëàññîâàÿ ïåðåìåííàÿ óêàçàííûé äèíàìè÷åñêèé òèï.
|
|
Îïåðàöèÿ <code><b>as</b></code> ïîçâîëÿåò áåçîïàñíî ïðåîáðàçîâàòü ïåðåìåííóþ
|
|
îäíîãî êëàññîâîãî òèïà ê äðóãîìó êëàññîâîìó òèïó (â îòëè÷èå îò
|
|
<a href="../Classes/classcast.html">ÿâíîãî ïðèâåäåíèÿ êëàññîâîãî òèïà</a>).</p>
|
|
<p>Îïåðàöèÿ
|
|
<code><b>is</b></code> èìååò âèä:</p>
|
|
<blockquote>
|
|
<p><code>a <b>is</b> </code><i>ClassType</i></p>
|
|
</blockquote>
|
|
<p>è âîçâðàùàåò <code>True</code> åñëè
|
|
<code>a</code> ïðèíàäëåæèò ê êëàññó <i>ClassType</i>
|
|
èëè îäíîìó èç åãî ïîòîìêîâ. </p>
|
|
<p>Íàïðèìåð, åñëè <code>Base</code>
|
|
è <code>Derived</code> - êëàññû, ïðè÷åì,
|
|
<code>Derived</code> - ïîòîìîê <code>Base</code>,
|
|
ïåðåìåííûå b è d èìåþò ñîîòâåòñòâåííî òèïû <code>Base</code>
|
|
è <code>Derived</code>, òî âûðàæåíèÿ
|
|
<code>b <b>is</b> Base</code> è <code>d <b>is</b>
|
|
Base</code> âîçâðàùàþò <code>True</code>,
|
|
à <code>b <b>is</b> Derived</code> - <code>False</code>.</p>
|
|
<p>Îïåðàöèÿ
|
|
<code><b>as</b></code> èìååò âèä:</p>
|
|
<blockquote>
|
|
<p><code>a <b>as</b> </code><i>ClassType</i></p>
|
|
</blockquote>
|
|
<p>è âîçâðàùàåò ññûëêó íà îáúåêò òèïà
|
|
<i>ClassType</i> åñëè ïðåîáðàçîâàíèå âîçìîæíî, â
|
|
ïðîòèâíîì ñëó÷àå âîçâðàùàåò <code><b>nil</b></code>.</p>
|
|
<p>Íàïðèìåð, â ïðîãðàììå</p>
|
|
<blockquote>
|
|
<p><code><b>type</b> <br>
|
|
Base = <b>class</b> <b><br>
|
|
end</b>;<br>
|
|
Derived = <b>class</b>(Base) <b><br>
|
|
procedure</b> p;<b><br>
|
|
begin<br>
|
|
end</b>;<b><br>
|
|
end</b>;</code></p>
|
|
<p><code><b>var</b> b: Base;</code></p>
|
|
<p><code><b>begin</b><br>
|
|
b := new Base;<br>
|
|
writeln(b <b>i</b><b>s</b> Derived);<br>
|
|
b := new Derived;<br>
|
|
writeln(b <b>i</b><b>s</b> Derived);<br>
|
|
<b>end</b>. </code></p>
|
|
</blockquote>
|
|
<p>ïåðâûé ðàç âûâîäèòñÿ <code>False</code>,
|
|
âòîðîé - <code>True</code>.</p>
|
|
<p>Îïåðàöèè <code><b>is</b></code> è
|
|
<code><b>as</b></code> èñïîëüçóþòñÿ äëÿ ðàáîòû ñ
|
|
ïåðåìåííîé áàçîâîãî êëàññà, ñîäåðæàùåé îáúåêò ïðîèçâîäíîãî êëàññà.</p>
|
|
<p><b>1 ñïîñîá.</b></p>
|
|
<blockquote>
|
|
<p><code><b>if</b> b <b>is</b> Derived then <br>
|
|
Derived(b).p;</code></p>
|
|
</blockquote>
|
|
<p><b>2 ñïîñîá.</b></p>
|
|
<blockquote>
|
|
<p><code><b>var</b> d: Derived := b <b>as</b> Derived;<br>
|
|
d.p;</code></p>
|
|
</blockquote>
|
|
|
|
</body></html> |