Jess-Rule:字段比较中的 Str-Cat 无法编译

Jess-Rule : Str-Cat in Field comparison doen't compile

我不想匹配 jess-object 的值(字符串),比较值是字符串和另一个字段的组合。

这是一个简单的 ("runnable") 示例:

(defclass Person (is-a :THING) (slot name (type string)) (slot email (type string))) 
(mapclass Person)

(make-instance Andy of Person (name "Andy") (email "Andy@mail"))

(defrule search 
(object (OBJECT ?tmpPerson)
    (is-a Person)
    (email (str-cat (slot-get ?tmpPerson name) "@mail"))
) 
=> 
(print t "found")
)

但代码无法在 JessTab 中编译。似乎在字段名称“name”之后不允许使用“(”。

错误:

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.

我该如何解决这个问题?

提前致谢

要将模式与函数返回的值相匹配,您必须在函数调用之前加上等号——即“(name =(str-cat ...”