数组或集合中元素的java高效Drools求值
使用Drools 3.0.6(old,我知道),在已知、固定且相当大的数组或集合(contains的倒数,即“is contain in”)中查找事实的有效评估是什么。 由于Drools二进制运算符的求值是递归的,因此在StackOverflowerError中使用或一系列正常的“equals”会导致数组/集合可能包含数千个条目
我们有一个单值事实和一个要匹配的值数组。当前的“代码”如下所示:
$f: Fact(name="TheFact", $data)
eval(!($data.equals("1") || $data.equals("2") || $data.equals("3") ... ))
对于大量固定值(1,2,3,…)。我正在寻找更像“$data in(1,2,3,…”的东西
# 1 楼答案
有时,您需要(或者更易于阅读)将一些计算放入对象本身。然后您可以将eval语句简化为
eval(!$f.isInRange(1, 200))