ToDo. Сделать EXPORTS.
Например для таких конструкций как HLTCLike. Которые на данный момент агрегируют в себя свои USES.
Но сейчас это сделано "костылём", а не "системно".
:: выглядит например так:
USES A.script // - подключаем модуль A - его слова доступны нам B.script // - подключаем модуль B - его слова доступны нам C.script // - подключаем модуль C - его слова доступны нам D.script // - подключаем модуль D - его слова доступны нам ; EXPORTS UNIT A // - экспортируем модуль A так так если бы его слова были определены в нашем пространстве имён. // Его слова доступны тем, кто использует нас через USES EXPORTS UNIT B // - экспортируем модуль B так так если бы его слова были определены в нашем пространстве имён. // Его слова доступны тем, кто использует нас через USES EXPORTS UNIT C :: XXX // - экспортируем слово XXX из модуля C // Слово C :: XXX будет доступно тем, кто использует нас через USES. // Через имя XXX EXPORTS UNIT D :: XXX AS YYY // - экспортируем слово XXX из модуля D под именем YYY // Слово D :: XXX будет доступно тем, кто использует нас через USES. // Через имя YYY
Например для таких конструкций как HLTCLike. Которые на данный момент агрегируют в себя свои USES.
Но сейчас это сделано "костылём", а не "системно".
UNIT // - возвращает ссылку на модуль. :: // - возвращает ссылку на слово. EXPORTS // - экспортирует ссылку. AS // - переименовывает ссылку. Точнее создаёт новую с другим именем.
:: выглядит например так:
^@ operator :: ^@ IN aSelf ^L IN aName OBJECT VAR l_Self aSelf |^@ >>> l_Self STRING VAR l_Name aName |N >>> l_Name OBJECT VAR l_Res l_Self %% l_Name >>> l_Res ASSURE NOT ( l_Res pop:object:IsNil ) [ 'Не найдено поле: ' l_Self LIST %P Reverted ==> ( |N '::' ) l_Self |N '::' l_Name ] l_Res >>> Result ; // ::
Сделал.
ОтветитьУдалить