1

我很难理解这部分value : value == 0?这段代码是如何工作的?

rule "My rule"
   when
       m : MyClass( value : value == 0)
    then
end
4

1 回答 1

5

假设您使用的是 Drools 5.4 或更新的快照,您可以将任何布尔表达式编写为value == 0约束,“值”是 MyClass 中的字段名称的约束也是如此。

Drools 还允许您使用“:”将属性绑定到变量名,如下所示:

<variable_name> : <fieldName>

所以,你可以写:

MyClass( $var : value == 0)

最后,由于 Drools 使用“上下文感知”解析器,您可以拥有一个与属性名称同名的变量,因为 Drools 知道 : 之前的内容是变量名称,而不是字段。因此,在您的示例中:变量“value”将绑定到属性“value”,如果 value 属性等于 0,则约束“value == 0”将为真。

希望能帮助到你。

于 2012-06-28T02:26:12.873 回答