0

我怎样才能对每个事实只执行一次规则?

(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)
4

1 回答 1

1

另一个俄罗斯方块玩家?:-)

无论如何,你必须使用

(defrule clean
   (declare (no-loop TRUE)) 
   ?li<-(VISUAL::removedLine ?line)     
于 2014-04-08T15:55:48.190 回答