规则的 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是
是否有可能尝试/排除/传递错误?