Импорт и экспорт конструкций
За исключением специально экспортированных и импортированных, конструкции, определенные в одном модуле, не могут использоваться в другом модуле. Конструкция называется видимой или находящейся в пределах области видимости модуля, если она может использоваться в модуле. Например, если пользователь хочет указать в модуле в конструктор deftemplate с именем foo, определенный в модуле A, то модуль A должен экспортировать deftemplate foo, а модуль В должен импортировать deftemplate foo их модуля А. Подобная ситуация приведена на рис. 12.4.
Рис. 12.4.Импорт/экспорт шаблонов
CLIPS не допускает существования двух конструкторов с одинаковыми именами, видимых в одном модуле.
Спецификация экспорта в определении модуля служит для определения, какие именно конструкции данного модуля могут импортироваться другими модулями. Экспортироваться способны только следующие конструкции: deftemplates, defclasses, defglobals, deffunctions, и defgenerics. Модуль может экспортировать любую видимую конструкцию данных типов. При этом не обязательно, чтобы эта конструкция была непосредственно определена в данном модуле.
В CLIPS существует три типа спецификации экспорта.
Ø Во-первых, модуль может экспортировать все видимые в нем конструкции. Это осуществляется с помощью ключевого слова export и следующего за ним ключевого слова ?ALL.
Ø Во-вторых, модуль может экспортировать все видимые в нем конструкции заданного типа. Для этого используется ключевое слово export, тип конструкции и ключевое слово ?ALL.
Ø В-третьих, модуль может экспортировать некоторые отдельные конструкции заданного типа. Это осуществляется с помощью ключевого слова export, типа конструкции, списка из одного или более имен видимых конструкций заданного типа, которые необходимо экспортировать.
В приведенном ниже примере модуль A экспортирует все видимые в нем конструкции, модуль B — все конструкции deftemplate, а модуль C — три отдельных конструкции defglobal.
Дата добавления: 2021-12-14; просмотров: 268;