Я не могу сопоставить значение (String) объекта jess, а сравнительное значение представляет собой комбинацию строки и другого поля.Jess-Rule: Str-Cat в сравнении полей doen't compile
Вот простой ("работоспособный"), например:
(defclass Person (is-a :THING) (slot name (type string)) (slot email (type string)))
(mapclass Person)
(make-instance Andy of Person (name "Andy") (email "[email protected]"))
(defrule search
(object (OBJECT ?tmpPerson)
(is-a Person)
(email (str-cat (slot-get ?tmpPerson name) "@mail"))
)
=>
(print t "found")
)
Но код не компилируется в JessTab. Кажется, что после имени поля "имени" "(" не допускаются
Ошибка.
Jess reported an error in routine Jesp.parsePattern.
Message: Bad slot value at token '('.
Program text: (defrule search (object (OBJECT ?tmpPerson) (is-a Person) (name ( at line 5.
Как я могу это исправить
Спасибо? аванс
спасибо. Это делает мой день :-) – user2667549
изменил его на [...] (email = (str-cat (имя-slot-get? TmpPerson name) "@mail")) (моя ошибка, я хотел набрать «email» -Slot а не «имя») – user2667549