У нас есть сценарий использования для оценки логических выражений.
Как мы это делаем сегодня -
JexlContext jc = new MapContext();
Foo foo = new Foo();
List<Variable> variableList = new ArrayList();
variable.add(new Variable());
variable.add(new Variable());
variable.add(new Variable());
jc.set("foo", foo);
for(Variable variable : variableList){
jc.set("variable", variable);
JexlExpression e = jexl.createExpression("(foo.getBool1(variable) && foo.getBool2(variable)) || foo.getBool3(variable)");
Object o = e.evaluate(jc);
}
Это допускает короткое замыкание, как будто foo.getBool2 (переменная) возвращает true, foo.getBool2 (переменная)) вычислять не нужно.
Однако теперь определено, что функции getBool1, getBool2, getBool3 работают
Лучше, если они передают пакет переменных, а не одну за раз.
Подпись меняется с
от логического getBool1 (переменная v) до логического getBool1 (список vList).
Есть ли способ добиться короткого замыкания логического выражения с помощью пакета переменных, используя JEXl?
Должен ли я перейти к выполнению операций над множествами?
Любые предложения приветствуются.