我想知道的是首先绑定一个变量然后在一个表达式中以相同的模式使用它比首先执行表达式而不进行绑定然后如果表达式求值为true则执行绑定以便我们有值在下一个模式或后一部分。
例如我们接下来有三种情况:
rule "first doing binding and using that value for the expression"
when
Pattern1($var : var, $var > 10, $var < 20)
then
System.out.println($var);
end
rule "first doing binding and using the value from the original variable"
when
Pattern1($var : var, var > 10, var < 20)
then
System.out.println($var);
end
rule "first doing expression with using the value from the original variable and then doing the binding if the expression is evaluated to true"
when
Pattern1(var > 10, var < 20, $var : var)
then
System.out.println($var);
end
对我而言,最后一个案例最有意义,但我希望看到一个意见。
如果在模式之外不需要变量,那么进行绑定也没有任何意义吗?
答案 0 :(得分:2)
这主要是品味问题。我的意见:
所以我的首选方式是:
Pattern1( $var: var, var > 10 && < 20)
Pattern2( $var: var > 10 && < 20)
请注意,#1允许您使用约束对带有绑定和约束的绑定进行分组,这可能更具可读性。