96 lines
4.3 KiB
HTML
96 lines
4.3 KiB
HTML
<html>
|
||
|
||
<head>
|
||
<object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
|
||
<param name="Keyword" value="with">
|
||
<param name="Keyword" value="do">
|
||
</object>
|
||
<object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
|
||
<param name="Keyword" value="with">
|
||
</object>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
|
||
<title></title>
|
||
<link rel="StyleSheet" href="../../default.css">
|
||
</head>
|
||
|
||
<body>
|
||
<H1>Оператор with</H1>
|
||
Оператор <b><code>with</code></b> позволяет сократить обращение
|
||
к полям записи, а также к полям, методам и свойствам объекта. Он имеет вид:<blockquote>
|
||
<p><code><b>with</b> </code> <code class="codeit">имя
|
||
записи или объекта</code><code> <b>do</b> </code>
|
||
<code class="codeit">оператор</code></p>
|
||
</blockquote>
|
||
<p>или</p><blockquote>
|
||
<p><code><b>with</b> </code> <code class="codeit">список имен</code><code> <b>do</b> </code>
|
||
<code class="codeit">оператор</code></p>
|
||
</blockquote>
|
||
<p>Всюду внутри оператора можно опускать имя записи при
|
||
обращении к полю указанной записи или имя объекта при обращении к полю, методу
|
||
или свойству указанного объекта. Например, пусть описана
|
||
переменная </p>
|
||
<blockquote>
|
||
<p><code><b>var</b> <br>
|
||
DateOfBirthday =<b> record</b><br>
|
||
Day: Integer;<br>
|
||
Month: Integer;<br>
|
||
Year: Integer;<br>
|
||
<b>end</b>;</code></p>
|
||
</blockquote>
|
||
<p>Тогда присваивание значений ее полям без использования
|
||
оператора <b><code>with</code></b> имеет вид:</p>
|
||
<blockquote>
|
||
<p><code>DateOfBirthday.Day := 23;<br>
|
||
DateOfBirthday.Month := 2;<br>
|
||
DateOfBirthday.Year := 1965;</code></p>
|
||
</blockquote>
|
||
<p>Использование оператора <code><b>with</b></code> позволяет сократить
|
||
предыдущую запись:</p>
|
||
<blockquote>
|
||
<p><code><b>with</b> DateOfBirthday <b>do</b><br>
|
||
<b>begin</b><br>
|
||
Day := 23;<br>
|
||
Month := 2;<br>
|
||
Year := 1965;<br>
|
||
<b>end</b>;</code></p>
|
||
</blockquote>
|
||
<p>Если внешняя переменная имеет то же имя, что и поле (метод, свойство), то
|
||
предпочтение отдается полю (методу, свойству). При наличии вложенных операторов
|
||
<code><b>with</b></code> вначале предпринимается попытка рассматривать переменную как поле записи
|
||
или объекта самого внутреннего оператора <code><b>with</b></code>, затем непосредственно объемлющего
|
||
его оператора <code><b>with</b></code> и т.д. Если оператор
|
||
<code><b>with</b></code> содержит список объектов,
|
||
то они рассматривается справа налево. Например, если имеются описания </p>
|
||
<blockquote>
|
||
<p><code><b>var</b> <br>
|
||
x,y,z: integer;<br>
|
||
a: <b>record</b><br>
|
||
x,y: integer;<br>
|
||
<b> end</b>;<br>
|
||
b: <b>record</b><br>
|
||
x: integer;<br>
|
||
<b> end</b>;</code></blockquote>
|
||
<p>то фрагмент программы</p>
|
||
<blockquote><code><b>with</b> a,b <b>do</b><br>
|
||
<b>begin</b><br>
|
||
x := 1; <br>
|
||
y := 2;<br>
|
||
z := 3; <br>
|
||
<b>end</b>;</code></blockquote>
|
||
<p>эквивалентен фрагменту</p>
|
||
<blockquote><code><b>with</b> a <b>do</b><br>
|
||
<b>with</b> b <b>do</b><br>
|
||
<b> begin</b><br>
|
||
x := 1; <br>
|
||
y := 2;<br>
|
||
z := 3; <br>
|
||
<b> end</b>;</code></blockquote>
|
||
<p>а также фрагменту </p>
|
||
<blockquote><p><code>b.x:=1; <br>
|
||
a.y:=2;<br>
|
||
z:=3;</code></p>
|
||
</blockquote>
|
||
<p>Оператор with устарел и сейчас практически не используется.</p>
|
||
</body>
|
||
|
||
</html> |