Cтраница 1
Локальные модули - это модули, погруженные внутрь других модулей. О них идет речь в гл. Глобальные модули состоят из двух частей: модуля определений, перечисляющего доступные извне средства, и модуля реализации. Модули определений рассматриваются в гл. [1]
Локальный модуль - это модуль, вложенный внутрь другого. Иногда локальный модуль вложен внутрь процедуры. Использование локальных модулей позволяет улучшить организацию программы. Они также используются для защиты критических секций ( разд. Размещение нескольких связных процедур я структур данных в локальном модуле объединяет их и изолирует от внешнего модуля. [2]
Локальный модуль создает новую среду, изолированную от внешней среды. Как и в любом модуле, внешние объекты недоступны внутри модуля, если только они не импортированы в этот локальный модуль. Аналогично, внутренние объекты локального модуля недоступны извне, если только они не экспортированы из этого локального модуля. [3]
Локальные модули очень часто используют для создания новой, вложенной, изолированной от внешнего окружения среды. [4]
Локальный модуль Спрячь в этом примере использует некваянфицнруемый экспорт для процедур Инициализация и [ ЬмажиПереи. Эти две процедуры могут использоваться во внешнем модуле с помощью простого упоминания их имен. Когда в локальном модуле используется квалифицируемый экспорт, то для ссылки на такие экспортируемые объекты употребляют квалифицируемые идентификаторы. [5]
Локальный модуль - это модуль, который находится внутри другого модуля. [6]
Локальные модули позволяют выделить в заключающем их модуле несколько кусков, избежав при этом неудобства, связанные с созданием нового глобального модуля. Локальные модули обычно в совокупности составляют большой глобальный модуль, поэтому привести здесь небольшой пример нереально. Локальные модули обсуждаются в гл. [7]
Процедуры и локальные модули не являются единицами компиляции. [8]
Возможна вложенность локального модуля внутрь процедуры. В этом случае переменные модуля создаются в начале выполнения окружающей его процедуры и исчезают при его окончании. Если модуль, вложенный в процедуру, содержит тело, то оно выполняется перед выполнением тела окружающей процедуры. [9]
ЗАМЕЧАНИЕ: включение локального модуля в процедуру, которая, в свою очередь, находится в библиотечном модуле, - не необходимость, а скорее пример. [10]
Оператор RETURN используется внутри локального модуля для прекращения выполнения его тела точно так же, как он используется в процедуре. Из тела модуля невозможно вернуть значение. Таким образом, тела модулей - это что-то похожее на процедуры без параметров. [11]
![]() |
Организация программы Кросс. [12] |
То, что экспортируется из локального модуля, помещается во внешнее окружение. [13]
Поэтому все, что нужно локальному модулю из глобального модуля, должно быть сначала импортировано в окружающую среду этого локального модуля, а затем импортировано в сам локальный модуль. [14]
В качестве примера я собираюсь привести локальный модуль HriteHod, который разбивает вывод на страницы и колонки. WriteMod экспортирует процедуру WRITECARD, вызываемую для вывода чисел типа CARDINAL. Модуль WriteHod использует статические переменные для хранения номера строки и номера колонки. Каждый раз при выводе числа WriteMod проверяет. [15]