13.2.8 Оператор With |
Вверх Предыдущий Следующий |
Оператор with служит для доступа к элементам записи, объекта или класса, без указания каждый раз полного имени этого элемента. Синтаксис оператора with Оператор with Переменная ссылка должна быть переменной типа записи, объекта или класса. В операторе with,любая ссылка на переменную или метод проверяется, чтобы увидеть что это поле, метод записи, объекта или класса. Если да, то поле доступно и к нему можно обратится, или можно вызвать метод. Примем во внимание определение: Type Passenger = Record Name : String[30]; Flight : String[10]; end;
Var TheCustomer : Passenger; Тогда следующие присвоения полностью эквивалентны: TheCustomer.Name := 'Michael'; TheCustomer.Flight := 'PS901'; и With TheCustomer do begin Name := 'Michael'; Flight := 'PS901'; end; Оператор With A,B,C,D do Statement; эквивалентен With A do With B do With C do With D do Statement; Это говорит о том, что переменные ищутся от последнего к первому, то есть, когда компилятор встречает ссылку на переменную, он сначала проверить, это поле или метод в последней переменной (ссылке). Если поля нет, то он проверит предпоследнюю (ссылку), и так далее. Следующий пример демонстрирует это; Program testw; Type AR = record X,Y : Longint; end; PAR = ^Ar;
Var S,T : Ar; begin S.X := 1;S.Y := 1; T.X := 2;T.Y := 2; With S,T do WriteLn (X,' ',Y); end. Эта программа выведет 2 2 Таким образом, X, Y в операторе Writeln совпадают с полями переменной записи T.
|