规则的 LHSR_blup
包含
(test (>= ?s2 2))
也就是说,它检查是否?s2
大于或等于 2。?s2
对应于名为 的实例槽s2
。
不幸的是,我得到了错误
Function >= expected argument #1 to be of type integer or float
问题是我的代码(test ...
在我可以设置参数#1 之前执行,即在我可以设置s2
为整数或浮点值之前。s2
应该在由另一个规则触发的 python 调用中设置为整数R_blah
。
该错误是在属于另一个 rule 的另一个 python-call 中间触发的R_xyz
。这个 python 调用通过clips_instance.Slots["slot_name"] = some_value
.
这通常是如何处理的?我看到三个我不太喜欢的解决方案:
- 为 设置默认(整数)值
s2
。 - 修改
(test ...
以首先检查nil
。 - 添加另一个检查/规则以等待
s2
不再nil
是
是否有可能尝试/排除/传递错误?