Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, Mamut, Вы писали:
M>>Что такое еxported items?
СГ>Все что написано внутри модуля считается инкапсулированным в нем. Модуль является не только единицей компиляции и исполнения, но и единицей инкапсуляции (что правильно). Для того чтобы что-то из написанного можно было увидеть из других модулей это что-то надо как-то отметить, логично да?
Стоп. Предположим я — ученик 7-9 класса. Моя реакция: "Чего?" Переведите с китайского. Что за инкапсуляция. Что за единица компиляции. Что значит увидеть из других модулей?
СГ>Вопрос как это синтаксически отметить так чтобы и видно сразу было и писать не много? Вот для этих отметок придумали использовать "*" и "-". Для переменных "-" означает доступ только для чтения, "*" означает полный доступ.
Для языка, в котором текста и так явно слишком много, это утверждение странно. Почему не пойти по минимизации дальше и не заменить begin end на {}? Или почему не заменить *- на exportable и readonly? Хуже бы от этого не стало. Налицо плохой дизайн языка.
СГ>Подробности в Langauge Report, а тут пример:
Опять же предположим я — ученик 7-9 класса. Зачем мне читать Language Report?
СГ>СГ>MODULE Test;
СГ>TYPE
СГ> MyPrivateType = RECORD (* ... *) END; (* Другие модули этого типа не видят *)
СГ> MyPublicType* = RECORD (* Другие модули этот тип видят *)
СГ> PrivateVariable : INTEGER; (* Из других модулей эта переменная не видна *)
СГ> ReadOnlyVariable- : INTEGER; (* Другие модули могут только читать эту переменную *)
СГ> ReadWriteVariable*: INTEGER; (* Другие модули могут и читать и писать в эту переменную *)
СГ> END;
СГ>
Для сравнения (гипотетически):
TYPE
MyPrivateType = RECORD (* ... *) END; (* Другие модули этого типа не видят *)
exportable MyPublicType = RECORD
PrivateVariable : INTEGER;
readonly exportable ReadOnlyVariable,
readonly ReadOnlyLocalVariable: INTEGER;
exportable ReadWriteVariable: INTEGER;
END;
тоже криво, но зато
сразу видно какая переменная чем является и не используются символы, знакомые всем, как знаки математических операторов. А если есть и грамотная раскраска синтаксиса в ИДЕ, то вообще красота.
Единственная причина, по которой существуют извращения типа readonly exportable и exportable — это отказ от классов и полей private и public, которые являются намного интуитивнее, чем эти извращения.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>