Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Получение значений по умолчанию с помощью атрибутов ограничений
Если для слотов объекта или факта значения по умолчанию явно не заданы, то эти значения могут автоматически получаться из атрибутов ограничений. Для этого используются следующие правила: 1. Тип по умолчанию выбирается из списка допустимых типов, заданных атрибутом type. При этом используется следующий порядок приоритетов типов: SYMBOL, STRING, INTEGER, FLOAT, INSTANCE-NAME, INSTANCE-ADDRESS, FACT-ADDRESS, EXTERNAL-ADDRESS. 2. Если тип по умолчанию имеет заданные константные ограничения (например, атрибут allowed-integers для типа integer), то первое значение, заданное в константном ограничении, используется в качестве значения по умолчанию для данного слота. 3. Если значение по умолчанию нельзя определить на шаге 2, а тип слота по умолчанию integer или float, и для данного слота задан атрибут диапазона, то, если нижняя граница диапазона не равна значению? variable, это значение используется в качестве значения по умолчанию. В случае если нижняя граница диапазона равна значению? variable, а верхняя неравна? variable, то в качестве значения по умолчанию используется верхняя граница диапазона. 4. Если значение по умолчанию нельзя определить на шаге 2 и 3, то в качестве значения по умолчанию для слота берутся значения по умолчанию для типов. Это nil для типа symbol, " " для типа string, 0 для integer, 0.0 для FLOAT, [nil] для INSTANCE-NAME, указатель на несуществующий объект для INSTANS-ADDRESS, указатель на несуществующий факт для FACT-ADDRESS и NULL для EXTERNAL-ADDRESS. 5. Шаги 1—4 используются для определения значения по умолчанию для простых слотов. Значение по умолчанию для составных слотов — это составное значение нулевой длины. Однако если составной слот имеет атрибут ограничения мощности, задающий минимальную мощность слота, большую 0, то в качестве значения по умолчанию для этого слота используется составное значение с количеством полей, равным минимальной мощности поля. Каждое поле при этом содержит значение по умолчанию, определенное с помощью шагов 1—4. Примеры нарушения ограничений В этом разделе приведено несколько примеров, иллюстрирующих некоторые типы нарушений ограничений, которые обнаруживает CLIPS. Введите в CLIPS следующий конструктор deftemplate. Пример 13.1. Шаблон с ограничениями (deftemplate bar (slot a (type SYMBOL INTEGER)) (slot b (type INTEGER FLOAT)) (slot с (type SYMBOL STRING))) Теперь попробуем ввести правило, использующее созданный шаблон.
|