Je ne voulais pas faire correspondre une valeur (String) d'un objet-jess et la valeur comparative est une combinaison d'une chaîne et d'un autre champ.Jess-Rule: Comparaison de Str-Cat in Field Ne pas compiler
Voici un simple ("runnable") Exemple:
(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")
)
Mais le code ne compile pas JessTab. Il semble que, après le nom du champ "nom" le "(" n'est pas autorisé
Erreur:.
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.
Comment puis-je résoudre ce problème
Merci à? avance
Merci beaucoup. Cela rend ma journée :-) – user2667549
l'a changé en [...] (email = (str-cat (nom de slot-get? TmpPerson) "@mail")) (mon erreur, je voulais taper "email" -Slot et pas "nom") – user2667549