2014-10-28 4 views
0

У меня есть deftemplate, который содержит мультислот в JESS, и я хочу удалить переменную в мультилоте, если это правило запущено. например:удаление переменной мультислота в JESS

(deftemplate Person (slot name) 
        (multislot friends)) 
(assert (Person (name John)(friends Jimmy Joe Jessica))) 

сейчас я хочу удалить Джимми из слота друзей.

Большое спасибо Ali

ответ

1

Я исправил некоторые упущения в вашем вопросе, считая, что имя шаблона Person.

Это правило исключает Джимми из всех friends всех лиц.

(defrule KillJimmy 
    ?p <- (Person (friends $?a Jimmy $?b)) 
=> 
    (modify ?p (friends (create$ $?a $?b))) 
) 
+0

Эй, спасибо большое Лауне, но если бы я хотел удалить больше одного из друзей, я должен написать отдельное правило для каждого? –

+0

Это зависит от того, как вы хотите/должны указывать имена, которые зависят от того, как и когда (время компиляции, время выполнения) они известны или вводятся и т. Д. – laune

+0

Могу ли я добавить возраст каждого друга в этом deftemplate? например, есть (Person (друзья (jimmy 33))) ??? Есть ли в этом смысл? –

 Смежные вопросы

  • Нет связанных вопросов^_^