在用户中增加全局变量可以回答defrule

时间:2015-05-19 08:35:26

标签: clips

如果用户通过使用(读取)函数定义他们有痛苦,我试图将defglobal变量(symcount)递增1

(defrule QPain
         (initial-fact)
         =>
         (printout t "Are You In Pain? " crlf) 
         (bind (ans Answer) (read)) 
         )
(defrule AnsInc
         (Answ Answer = "y")
         =>
         (bind ?*symcount* (+ ?*symcount* 1))) 

增量必须发生在用户按下" y" 否则增量不得发生。

1 个答案:

答案 0 :(得分:0)

CLIPS> (defglobal ?*symcount* = 0)
CLIPS> 
(defrule QPain
   =>
   (printout t "Are You In Pain? ") 
   (bind ?answer (read))
   (if (eq ?answer y)
      then
      (bind ?*symcount* (+ ?*symcount* 1))))
CLIPS> (reset)
CLIPS> (run)
Are You In Pain? y
CLIPS> ?*symcount*
1
CLIPS> (reset)
CLIPS> (run)
Are You In Pain? n
CLIPS> ?*symcount*
0
CLIPS>