Пример 12.3. Пример экспорта конструкций

(defmodule A (export?ALL))

(defmodule В (export deftempiate?ALL))

(defmodule С (export defglobal foo bar yak))

Вместо ключевого слова?ALL в спецификации экспорта может использо­ваться ключевое слово?NONE. В этом случае модуль не будет экспортировать либо вообще никаких конструкций, либо не будет экспортировать никаких конструкций заданного типа.

Конструкции defmethod и defmessage-handler никогда не экспортируются явно. Экспорт конструктора defgeneric автоматически приводит к экспорту всех ассоциированных с ним конструкторов defmethod. Экспорт конструктора defclass — к автоматическому экспортированию всех связанных с классом обработчиков (конструкторов defmessage-handler). Конструкции deffacts, definstances и defrules вообще не могут быть экспортированы.

Спецификация импорта в определении модуля служит для определения, какие конструкции из других модулей могут использоваться в данном модуле. Импортироваться могут только следующие конструкции: deftemplates, defclasses, defglobals, deffunctions и defgenerics.

В CLIPS существует три типа спецификации импорта.

Ø Во-первых, модуль может импортировать все конструкции, видимые в некотором заданном модуле. Это осуществляется с помощью ключевого слова import, имени модуля, из которого будет производиться импорт, и ключевого слова?all.

Ø Во-вторых, модуль может импортировать все конструкции заданного типа, видимые в некотором заданном модуле. Для этого используется ключевое слово import, имя модуля, тип конструкции и ключевое слово?all.

Ø В-третьих, модуль может импортировать некоторые отдельные конструкции заданного типа. Это осуществляется с помощью ключевого слова import, имени модуля, из которого будет производиться импорт, типа конструкции, списка из одного или более имен видимых конструкций заданного типа, которые необходимо импортировать.

В приведенном ниже примере модуль а импортирует все видимые конструкции модуля D, модуль B — все конструкции deftemplate из модуля D, а модуль C — три отдельных конструкции defglobal, также определенные в модуле D.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: