TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

Оператор with 

             В операциях над записями оператор with  удобно  использовать
        для  краткого обращения к полям записи.  В операторе with к полям
        одной или более конкретных переменных типа запись можно обращать-
        ся,  используя  только идентификаторы полей.  Оперaтор with имеет
        следующий синтаксис:

                     ┌────┐      ┌───────────────┐     ┌──┐   ┌────────┐
         оператор ──>│with├─────>│   ссылка на   ├──┬─>│do├──>│оператор├>
         with        └────┘  ^   │переменную типа│  │  └──┘   └────────┘
                             │   │    запись     │  │
                             │   │  или объект   │  │
                             │   └───────────────┘  │
                             │        ┌───┐         │
                             └────────┤ , │<────────┘
                                      └───┘

         ссылка на переменную        ┌────────────────────┐
         типа запись или объект  ───>│ссылка на переменную├──>
                                     └────────────────────┘

             Возьмем следующее описание:

             type
               TDate = record
                    Day   : Integer:
                    Month : Integer;
                    Year  : Integer:
               end;

             var OrderDate: TDate;

             С учетом данного описания приведем пример оператора with:

             with OrderDate do
               if Month = 12 then
               begin
                 Month := 1;
                 Year := Year + 1
               end else
                 Month := Month + 1;

             Это эквивалентно следующему:

             if OrderDate.Month = 12 then
             begin
               OrderDate.Month := 1;
               OrderDate.Year := TDate.Year + 1
             end
             else
               Date.month := TDate.Month + 1;


             В операторе with сначала производится проверка каждой ссылки
        на переменную,  а именно:  можно ли ее интерпретировать, как поле
        записи. Если это так, то она всегда интерпретируется именно таким
        образом, даже если имеется доступ к переменной с тем же именем.

             Допустим описаны следующие переменные:

            type
              TPoint = record
                        x,y: Integer;
                      end;
              var
                x: Point;
                y: Integer;

             В этом случае и к x,  и к y можно обращаться, как к перемен-
        ной или как к полю записи. В операторе:

            with x do
            begin
              x := 10;
              y := 25;
            end;

        x между  ключевыми  словами with и dо относится к переменной типа
        указатель,  а в составном операторе x и y ссылаются на x.x и y.y.

             Оператор:

             with V1,V2,...Vn do s;

        эквивалентен операторам:

             with V1 do
               with V2 do
                ...
                  with Vn do
                   S;

             В обоих случаях,  если Vn является полем и v1,  и v2, то она
        интерпретируется как v2.Vn, а не как v1.Vn.

             Если выборка переменной типа запись связана с индексировани-
        ем массива или разыменованием указателя, то эти действия произво-
        дятся до того, как будет выполняться составной оператор.

Содержание

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz