/
n-dimens
/
pascalabcnet
Обзор
Документация
Войти
/
n-dimens
/
pascalabcnet
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
PABCNetHelp/LangGuide/Operators/with.html
96 строк
4 KB
samuraiGH
adding working-tree-encoding attribute (#3325)
07 ноя 2025, 16:12
Не верифицирован
07 ноя 2025, 16:12
cf1fd29
Код
Авторство
О чём код?
<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>