您的位置:首页 > 大数据 > 云计算

13.MVEL脚本语法--函数

2015-06-15 21:20 2699 查看
函数定义

MVEL中,定义函数用def或function关键字定义。
如:
def hello(){
     System.out.println("hello world");
}

function hello(){
     System.out.println("hello world");
}

参数与返回值

MVEL中的函数一样可以传参数,返回结果。如下面的函数:
def add(a,b){
     a+b;
}

add函数需要传两个参数  a 和b 

因为MVEL遵循last-value-out原则,即输出最后值的原则,所以a+b的结果会被返回。也可以使用return关键字强制返回。

函数调用

函数在MVEL脚本文件中定义之后,在JAVA中的调用方法可以看下面的例子:

     首先新建一个.el文件写MVEL脚本,test.el:

[align=left]def add(a,b){[/align]
[align=left]       a+b;[/align]
[align=left]}  [/align]
     Java代码如下

[align=left]                    //获取脚本文件[/align]
[align=left]                     File scriptFile = new File("src/com/mvel/test.el" );[/align]
[align=left]                      VariableResolverFactory resolverFactory = new MapVariableResolverFactory();[/align]
[align=left]                      //参数[/align]
[align=left]                      Map map = new HashMap();[/align]
                      map.put("a",
11)
;
                      map.put("b",
12)
;
[align=left]                     [/align]
[align=left]                     MVEL. evalFile(scriptFile, ParserContext.create(), map);[/align]
[align=left]                     Object obj = MVEL. eval("add(a,b);", map);[/align]
闭包

Lambda(匿名函数)

threshold = def (x)
{ x >= 10 ? x : 0 };
[align=left]result = threshold(13);[/align]
[align=left]System.out.println(result);[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]关于函数调用的其他内容[/align]
[align=left][/align]
[align=left] MVEL没有发现有自己的内置函数,比如其他的表达式语言如aviator中有获取日期的函数sysdate(),MVEL没有类似的东西。[/align]
[align=left] 但是发现MVEL可以调用JAVA中的一些类的方法,比如 Math的方法。[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息