首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVEL算子过载

MVEL算子过载
EN

Stack Overflow用户
提问于 2014-03-12 07:07:38
回答 1查看 640关注 0票数 1

MVEL使向解析器上下文提供自定义函数变得非常容易,但尚不清楚是否有一种“官方”方法来重载运算符的计算方法。我有两个特定的用例:

  • 对数组执行算术时,应该将操作映射到数组的每个元素上,以便: [1, 2, 3] + 1 == [2, 3, 4]

  • 任何具有空操作数的操作都应该计算为空(就像Excel中的#N/A ),这样: 1 + null == null

如果没有“官方”解决方案,那么是否有明显的方式黑进MVEL来实现这一目标?

EN

回答 1

Stack Overflow用户

发布于 2014-06-18 08:25:56

第二期

代码语言:javascript
复制
1+ null == null

1* null

如果您实际上是在Mvel类中调试这一点,它们将显式地返回此特定情况下的false1null

如果梅维尔能解决这个问题,那就太好了。但是我也遇到了同样的问题,所以我们在执行表达式之前创建了一些智能,我们修改了表达式并包含了"IF“条件来检查为空的字段,并将运算符作为"/”或"*",返回空值。

您还可以使用VariableResolverFactory,并像下面这样传递您的函数

代码语言:javascript
复制
 private static VariableResolverFactory getMvelFactory(Map contextMap) {
        VariableResolverFactory functionFactory = new MapVariableResolverFactory(contextMap);
        MVEL.eval("checkNullValue = def (x) { x == null ? 0 : x };", functionFactory);

        return functionFactory;
    }

因此,通过这一点,您可以修改如下可执行表达式,并返回任何值。基本上需要在MVEL之上编写一个包装器。

a + bcheckNullValue(a) + checkNullValue(b)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22344299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档