Как связать значение глобальной переменной со слотом? - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь привязать слот к глобальной переменной, но, похоже, не работает.

Я попробовал следующее, но созданные мной правила не работают.

*(defrule getusermalinfo
(user  (usinfo  ?usr))
=>
(bind ?usr ?*degreeofyes*)  
)*

После этого я хочу использовать значение слота для принятия некоторых решений.Как правило ниже:

*(defrule not-likely
(user {usinfo <= 10})
=>
(printout t "Not suffering from Kwashiorkor" crlf)
)*

1 Ответ

2 голосов
/ 10 июня 2019

Нельзя использовать (связать) для изменения значений слотов фактов. Вам нужно использовать (изменить), что-то вроде этого:

(defrule getusermalinfo
  ?user <- (user)
 =>
  (modify ?user (usinfo ?*degreeofyes*))
)

Обратите внимание, что вам, возможно, придется добавить что-то в LHS этого правила, чтобы выбрать какой-то конкретный пользовательский факт и / или избежать повторного применения этого правила после модификации.

...