首先绑定变量然后在相同模式的表达式中使用它是否有优势?
Is there an advantage of first binding a variable and than using it in an expression in the same pattern?
我想知道的是先绑定一个变量,然后以相同的模式在表达式中使用它,这比先执行表达式而不执行绑定,然后如果表达式的计算结果为真再执行绑定更好,这样我们就有了在下一个模式或 then 部分中可用的值。
例如下面三种情况:
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
对我来说,最后一个案例最有意义,但我想听听意见。
如果在模式之外不需要变量,那么进行绑定是否有意义?
这主要是个人喜好问题。我的意见:
- 如果您不需要其他地方的字段值,请不要绑定变量。 (Objective 论点:它只会使代码混乱,让你怀疑它是否在其他地方使用。)
- 坚持使用 "standard" 模式,即绑定和约束在一个短语中, 或 使用字段(不是变量)
- 对一个字段的多个相似 (!) 约束使用单个表达式
所以我的首选方式是:
Pattern1( $var: var, var > 10 && < 20)
Pattern2( $var: var > 10 && < 20)
请注意,#1 允许您将绑定与绑定和约束与约束分组,这可能更具可读性。
我想知道的是先绑定一个变量,然后以相同的模式在表达式中使用它,这比先执行表达式而不执行绑定,然后如果表达式的计算结果为真再执行绑定更好,这样我们就有了在下一个模式或 then 部分中可用的值。
例如下面三种情况:
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
对我来说,最后一个案例最有意义,但我想听听意见。
如果在模式之外不需要变量,那么进行绑定是否有意义?
这主要是个人喜好问题。我的意见:
- 如果您不需要其他地方的字段值,请不要绑定变量。 (Objective 论点:它只会使代码混乱,让你怀疑它是否在其他地方使用。)
- 坚持使用 "standard" 模式,即绑定和约束在一个短语中, 或 使用字段(不是变量)
- 对一个字段的多个相似 (!) 约束使用单个表达式
所以我的首选方式是:
Pattern1( $var: var, var > 10 && < 20)
Pattern2( $var: var > 10 && < 20)
请注意,#1 允许您将绑定与绑定和约束与约束分组,这可能更具可读性。