13.MVEL脚本语法--函数

来源:互联网 发布:python opencv clone 编辑:程序博客网 时间:2024/06/18 06:17
函数定义

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:
def add(a,b){
       a+b;
}  

     Java代码如下
                    //获取脚本文件
                     File scriptFile = new File("src/com/mvel/test.el" );
                      VariableResolverFactory resolverFactory = new MapVariableResolverFactory();
                      //参数
                      Map map = new HashMap();
                      map.put("a", 11);
                      map.put("b", 12);
                     
                     MVEL. evalFile(scriptFile, ParserContext.create(), map);
                     Object obj = MVEL. eval("add(a,b);", map);


闭包


Lambda(匿名函数)

threshold = def (x) { x >= 10 ? x : 0 };
result = threshold(13);
System.out.println(result);


关于函数调用的其他内容

 MVEL没有发现有自己的内置函数,比如其他的表达式语言如aviator中有获取日期的函数sysdate(),MVEL没有类似的东西。
 但是发现MVEL可以调用JAVA中的一些类的方法,比如 Math的方法。
1 0
原创粉丝点击