首页  

Aviator使用说明     所属分类 aviator 浏览量 183
数据类型
Number类型 数字类型 long,double,java.math.BigInteger(bigint) java.math.BigDecimal(decimal) 
bigint   大写字母 N 结尾的整数
decimal  大写字母 M 结尾的数字 
Long 整数 
Double  浮点数 
超过 long 范围的整数字面量 自动转换为 bigint 类型

String类型 字符串类型,单引号或者双引号括起来的文本串 
Bool类型  常量true和false 
Pattern类型 正则表达式, 以//括起来的字符串,如/\d+/,内部 实现为java.util.Pattern
变量类型
nil类型  常量nil  任何类型都大于nil ,传入的变量值如果为null,作为nil处理


import com.googlecode.aviator.AviatorEvaluator; import com.googlecode.aviator.Expression; import com.googlecode.aviator.runtime.function.AbstractFunction; import com.googlecode.aviator.runtime.function.AbstractVariadicFunction; import com.googlecode.aviator.runtime.function.FunctionUtils; import com.googlecode.aviator.runtime.type.AviatorDouble; import com.googlecode.aviator.runtime.type.AviatorObject; import com.googlecode.aviator.runtime.type.AviatorString; import java.util.HashMap; import java.util.Map; public class AvDemo3 { public static void main(String[] args) throws Exception { Object execute = AviatorEvaluator.execute("1+2+3"); System.out.println(execute.toString() + execute.getClass()); Object execute1 = AviatorEvaluator.execute("0.3+1.0"); System.out.println(execute1.toString() + execute1.getClass()); Expression compile = AviatorEvaluator.getInstance().compile("println('Hello, AviatorScript'); 1+2"); Object res = compile.execute(); System.out.println(res.toString()); // 变量 Map<String, Object> env = new HashMap<String, Object>(); env.put("name", "dyyx"); String execute2 = (String) AviatorEvaluator.execute(" 'hello' + name", env); System.out.println(execute2); // 函数 Object execute3 = AviatorEvaluator.execute("string.length('hello')"); System.out.println(execute3.toString()); //lambda (参数1,参数2...) -> 参数体表达式 end env.put("x", 1); env.put("y", 2); Object execute4 = AviatorEvaluator.execute("(lambda (x,y) -> x + y end)(x,y)", env); System.out.println(execute4.toString()); //支持自定义函数 AviatorEvaluator.addFunction(new AddFunction()); AviatorEvaluator.addFunction(new GetFirstNonNullFunction()); env.put("a", 9); env.put("b", 1); // 自定义函数 System.out.println(AviatorEvaluator.execute("add(1,2)").toString()); // 可变参数 System.out.println(AviatorEvaluator.execute("getFirstNonNull(a,b,c)", env)); // lambda表达式 自定义函数 AviatorEvaluator.defineFunction("sub", "lambda (a,b) -> a - b end"); System.out.println(AviatorEvaluator.execute("sub(3,1)").toString()); } static class AddFunction extends AbstractFunction { @Override public AviatorObject call(Map<String, Object> env, AviatorObject arg1, AviatorObject arg2) { Number left = FunctionUtils.getNumberValue(arg1, env); Number right = FunctionUtils.getNumberValue(arg2, env); return new AviatorDouble(left.doubleValue() + right.doubleValue()); } @Override public String getName() { return "add"; } } static class GetFirstNonNullFunction extends AbstractVariadicFunction { @Override public AviatorObject variadicCall(Map<String, Object> env, AviatorObject... args) { if (args != null) { for (AviatorObject arg : args) { if (arg.getValue(env) != null) { return arg; } } } return new AviatorString(null); } @Override public String getName() { return "getFirstNonNull"; } } }
https://gitee.com/dyyx/hellocode/blob/master/demo/aviatordemo/src/main/java/dyyx/AvDemo3.java

上一篇     下一篇
MybatisPlus QueryWrapper LambdaQueryWrapper LambdaQueryChainWrapper

mybatis plus 常用注解

mybatis 日志实现要点

Java注解实例

idea 设置异常断点

经典粤语歌