Грань ограничений

Синтаксис и функциональность ограничений для значений простых и со­ставных слотов, полей и переменных детально описаны в гл. 13. CLIPS под­держивает проверку статических и динамических ограничений для классов и объектов классов. Проверка статических ограничений осуществляется при выполнении конструктора или команды, определяющих значение слота. Кроме того, выполняется проверка объектов-образцов, используемых в ле­вой части правил для определения наличия конфликтов между ограниче­ниями переменными. В случае возникновения ошибки соответствующая информация сразу предоставляется пользователю. Режим статической про­верки ограничений включен по умолчанию. Эту установку можно изменить с помощью функции set-static-constraint-checking.

Кроме статической проверки CLIPS поддерживает возможность динами­ческой проверки ограничений слотов. Если этот режим включен, то значе­ния слотов проверяются при каждом изменении, включая изменения с помощью стандартных акцессоров или обработчиков сообщений, опре­деленных пользователем. По умолчанию этот режим выключен. Данную

установку можно изменить с помощью функции set-dynamic-constraint-checking. Если нарушение ограничения происходит в момент выполнения программы, то выполнение будет завершено.

Помимо описанных выше функций для изменения состояния статической и динамической проверки ограничений, пользователям Windows-версии среды CLIPS доступен визуальный способ установки режимов проверки ограниче­ний. Для этого необходимо открыть новое окно Execution Options, выбрав пункт Options в меню Execution. Внешний вид этого диалогового окна при­веден на рис. 11.12. Для включения или отключения статической и динамической проверки ограничений установите в соответствующее положение флажки Static Constraint Checking и Dynamic Constraint Checking.

Рис. 11.12. Установка режимов проверки ограничений

Независимо от включенных режимов проверки ограничений, значения со­ставных полей не могут быть сохранены в простые слоты. Значения про­стых слотов конвертируются в значения составных слотов с длиной, рав­ной 1, при сохранении в простой слот значения составного поля. Кроме того, CLIPS не допускает использование функций, не имеющих возвращае­мого значения для инициализации или изменения значения слота.


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



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