代码之家  ›  专栏  ›  技术社区  ›  Mirvnillith

数组或集合中元素的高效Drools求值

  •  1
  • Mirvnillith  · 技术社区  · 17 年前

    由于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 回复  |  直到 17 年前
        1
  •  0
  •   CZahrobsky    17 年前

    有时,您需要(或者更易于阅读)将一些计算放入对象本身。然后你可以把eval语句简化为 eval(!$f.isInRange(1, 200))