Re[18]: *
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 28.10.04 15:06
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Что такое еxported items?


Все что написано внутри модуля считается инкапсулированным в нем. Модуль является не только единицей компиляции и исполнения, но и единицей инкапсуляции (что правильно). Для того чтобы что-то из написанного можно было увидеть из других модулей это что-то надо как-то отметить, логично да? Вопрос как это синтаксически отметить так чтобы и видно сразу было и писать не много? Вот для этих отметок придумали использовать "*" и "-". Для переменных "-" означает доступ только для чтения, "*" означает полный доступ. Подробности в Langauge Report, а тут пример:

MODULE Test;

TYPE
  MyPrivateType = RECORD (* ... *) END; (* Другие модули этого типа не видят *)

  MyPublicType* = RECORD (* Другие модули этот тип видят *)
    PrivateVariable   : INTEGER; (* Из других модулей эта переменная не видна *)
    ReadOnlyVariable- : INTEGER; (* Другие модули могут только читать эту переменную *)
    ReadWriteVariable*: INTEGER; (* Другие модули могут и читать и писать в эту переменную *)
  END;


VAR
  PrivateVariable   : INTEGER; (* Из других модулей эта переменная не видна *)
  ReadOnlyVariable- : INTEGER; (* Другие модули могут только читать эту переменную *)
  ReadWriteVariable*: INTEGER; (* Другие модули могут и читать и писать в эту переменную *)


PROCEDURE DoSmth1(); (* Другие модули не видят этой процедуры *)
BEGIN
 (* ... *)
END DoSmth1;

PROCEDURE DoSmth2*(); (* Другие модули могут вызывать эту процедуру *)
BEGIN
 (* ... *)
END DoSmth2;

END Test;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.