55 lines
2 KiB
HTML
55 lines
2 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><b>// Ñòàðûé òåêñò</b></p>
|
|
<p>Îïåðàöèÿ <code><b>is</b></code> ïðåäíàçíà÷åíà äëÿ ïðîâåðêè òîãî, èìååò ëè
|
|
êëàññîâàÿ ïåðåìåííàÿ óêàçàííûé <a href="virtual.html">äèíàìè÷åñêèé òèï</a>.
|
|
Îïåðàöèÿ <code><b>as</b></code> ïîçâîëÿåò áåçîïàñíî ïðåîáðàçîâàòü ïåðåìåííóþ
|
|
îäíîãî êëàññîâîãî òèïà ê äðóãîìó êëàññîâîìó òèïó (â îòëè÷èå îò
|
|
<a href="classcast.html#ClassCast">ÿâíîãî ïðèâåäåíèÿ êëàññîâîãî òèïà</a>). </p>
|
|
<p>Åñëè <code>a1</code> - ïåðåìåííàÿ
|
|
êëàññîâîãî òèïà, à <code>B</code> - òèï êëàññà, òî âûðàæåíèå <code>a1 <b>is</b>
|
|
B</code>
|
|
âîçâðàùàåò <code>True</code> åñëè ïåðåìåííàÿ <code>a1</code> èìååò äèíàìè÷åñêèé
|
|
òèï, ñîâïàäàþùèé ñ B èëè ÿâëÿþùèéñÿ îäíèì èç åãî ïîòîìêîâ, è <code>False</code> â ïðîòèâíîì ñëó÷àå. Íàïðèìåð:</p>
|
|
<blockquote>
|
|
<p><code><b>type</b> <br>
|
|
A =<b> class<br>
|
|
end;</b><br>
|
|
B =<b> class</b>(A)<b><br>
|
|
end;<br>
|
|
var </b>a1: A;<br>
|
|
...<br>
|
|
a1 := B.Create;<br>
|
|
writeln(a1 <b>is</b> B); // True</code></p>
|
|
</blockquote>
|
|
<p>Åñëè <code>a1</code> - ïåðåìåííàÿ
|
|
êëàññîâîãî òèïà, à <code>B</code> - òèï êëàññà, òî âûðàæåíèå <code>a1 <b>as</b>
|
|
B</code>
|
|
âîçâðàùàåò îáúåêò êëàññà <code>B</code>, <code>a1</code> èìååò äèíàìè÷åñêèé òèï
|
|
<code>B</code> èëè ïðîèçâîäíûé îò íåãî è <b><code>nil</code></b> â ïðîòèâíîì
|
|
ñëó÷àå. Íàïðèìåð:</p>
|
|
<blockquote>
|
|
<p><code><b>var</b> b1: B;<br>
|
|
...<br>
|
|
b1 := a1 <b>as</b> B;</code><br>
|
|
</blockquote>
|
|
Ôàêòè÷åñêè ïîñëåäíÿÿ ñòðîêà äåëàåò òî æå, ÷òî è ñëåäóþùèé ôðàãìåíò êîäà:</p>
|
|
<blockquote>
|
|
<p><code><b>if</b> a1 <b>is</b> B <b>then</b><br> b1 := B(a1)<br><b>else</b> b1 :=<b> nil</b>;</code></p>
|
|
</blockquote>
|
|
|
|
</body>
|
|
|
|
</html> |