在 mvel 表达式中创建一个数组并检查数组中是否存在变量

GP0*_*007 5 java regex expression mvel

我有一个具有某些数值的变量x = 5;

我想纠正这样的表达式:

if arr = [4,7,10]包含xmvel中。

这可能吗,如果可以,怎么做?

截至目前,我必须正确表达为:

x == 4 || x == 7 || x == 10
Run Code Online (Sandbox Code Playgroud)

但因为我可能有一个很大的清单,可以将其做成类似的东西吗

x in [4,7,10,...]
Run Code Online (Sandbox Code Playgroud)

代码 :

for(Rule rule: ruleList)
{
    String expresssion = rule.getConditionExpression();
    boolean result = (Boolean) expressionHandler.execute(expresssion,ruleEvalData);

}
Run Code Online (Sandbox Code Playgroud)

这里的表达式如下:

表达式 = 'x == 4 || x == 7 || x == 10';

并且ruleEvalData 将包含x。

我想知道是否

表达式 ='x in [4,7,10,...]' 在MVEL 中可能吗?

小智 5

您想使用 MVELcontains运算符。您可以使用文字列表语法构造要测试的值列表。

[4,7,10] contains x
Run Code Online (Sandbox Code Playgroud)

contains奇怪的是,我在 MVEL 的文档页面中找不到该运算符的文档,但它存在于代码中并调用标准Collection.contains()方法。


Dim*_*San 1

使用java.util.stream.IntStream类别:

int[] array = {4, 7, 10};
boolean exist = IntStream.of(array).anyMatch(x -> x == 5);
Run Code Online (Sandbox Code Playgroud)

true如果该流的任何元素of(array)与提供的谓词匹配,则返回,否则返回false