Пример 11.28. Использование обработчиков put-special и special-put


(make-instance a of A (special 1))

(send [a] put-special 2)

(send [a] special-put 3)

Вы должны получить результат, идентичный приведенному на рис. 11.11. Легко заметить, что несмотря на то, что для данного класса а существует стандартный акцессор, функция make-instance для инициализации слота special использует обработчик special-put.

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

Синтаксис и функциональность ограничений для значений простых и со­ставных слотов, полей и переменных детально описаны в гл. 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 не допускает использование функций, не имеющих возвращае­мого значения для инициализации или изменения значения слота.



Дата добавления: 2021-12-14; просмотров: 191;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.006 сек.