在正确设置插槽之前,请避免模式匹配(错误)

时间:2017-04-27 12:27:57

标签: clips pyclips

规则R_blup的LHS包含

(test (>= ?s2 2))

即,它检查?s2是否大于或等于2. ?s2对应于名为s2的实例槽。

不幸的是,我收到了错误

Function >= expected argument #1 to be of type integer or float

问题是我的代码在设置参数#1之前执行(test ...,即在我可以将s2设置为整数或浮点值之前。 s2应该被设置为python调用中的一个整数,该整数由另一个规则R_blah触发。

错误是在属于另一个规则R_xyz的另一个python调用的中间触发的。此python-call通过clips_instance.Slots["slot_name"] = some_value修改实例。

这是如何正常处理的?我看到了三个我不太喜欢的解决方案:

  1. s2设置默认(整数)值。
  2. 首先修改(test ...nil进行检查。
  3. 添加另一个检查/规则,等待s2不再是nil
  4. 是否可以尝试/除/传递错误?

1 个答案:

答案 0 :(得分:1)

使用函数object-pattern-match-delay延迟模式匹配,为一系列更改创建原子操作:

channel_timeout