每次Jess规则触发时增加或更改变量

时间:2017-11-30 23:44:17

标签: clips expert-system jess

每次规则触发时,是否有办法增加或更改某些变量的值? 我需要每次规则fires引入插槽的新值,因为我将在下面的示例中使用此值进行连接: 我有一个电路和规则,将三角洲转换为星。对于每个转换产品都是附加节点。对于简单的网络,我将它命名为T,但对于更复杂的网络,我最终得到的网络充满了T节点,因为每次触发另一个delta的规则时,我都会得到一个T节点。

1 个答案:

答案 0 :(得分:1)

Jess有一种特殊的变量:全局变量。它们在程序的所有部分都可见,包括规则的RHS。要创建,请使用defglobal,例如

(defglobal ?*firecount* = 0)

请注意,星号是强制性的。

您可以像使用其他任何变量一样使用它们:

(++ ?*firecount*)
(printout t "fire counter = " ?*firecount* crlf)

请注意,即使reset也不会清除全局。 - 有关其他详细信息,请参阅Jess手册。