Ограничения параметров метода

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

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

Ограничение типа позволяет пользователю определить список типов (клас­сов), один из которых должен соответствовать (или являться суперклассом) аргументу родовой функции. Если в используемой вами конфигурации CLIPS не установлен COOL, то в качестве ограничения типа будут доступ­ны только следующие типы (классы): object, primitive, lexeme, symbol,

STRING, NUMBER, INTEGER, FLOAT, MULTIFIELD, FACT-ADDRESS И EXTERNAL-ADDRESS.

В гл. 11 все эти системные классы будут описаны подробно. Если COOL установлен, то, помимо перечисленных выше, будут доступны классы

INSTANCE, INSTANCE-ADDRESS, INSTANCE-NAME, USER, INITIAL-OBJECT, а также любой определенный пользователем класс. Родовая функция, которая исполь­зует только первую группу типов в своих методах, будет работать как с установленным COOL, так и без него. Классы, заданные в ограничении типа, должны быть определены до определения приоритета метода (см. разд. 10.4.2). CLIPS не поддерживает избыточность в списке ограничений типов аргумен­тов методов. Например, для представленного ниже метода ограничения типов аргументов избыточны, т. к. класс integer — подкласс number.


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



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