如何只针对每个事实执行一次规则?
(defrule clean
?li<-(VISUAL::removedLine ?line)
?cr<-(point (x ?px) (y ?py &: (< ?py ?line)))
=>
(modify ?cr (x ?px) (y (+ 1 ?py))))
当我执行此规则并进行修改时,它将创建一个新点并执行该新点的规则。
例如:
point (x 1) (y 2)
执行规则
point (x 1) (y 3)
执行规则
point (x 1) (y4)
我只想让它执行一次,就像这样:
point (x 1) (y 2)
执行规则
point (x 1) (y 3)
答案 0 :(得分:1)
另一个俄罗斯方块玩家? : - )
无论如何,你必须使用
(defrule clean
(declare (no-loop TRUE))
?li<-(VISUAL::removedLine ?line)