1 Aviator是个什么东西,有什么用?
Aviator是一个高性能、轻量级的 java 语言实现的表达式求值引擎, 主要用于各种表达式的动态求值。Aviator的设计目标是轻量级和高性能,
Aviator 的特性:
- 支持绝大多数运算操作符,包括算术操作符、关系运算符、逻辑操作符、位运算符、正则匹配操作符(
=~
)、三元表达式(?:
) - 支持操作符优先级和括号强制设定优先级
- 逻辑运算符支持短路运算。
- 支持丰富类型,例如nil、整数和浮点数、字符串、正则表达式、日期、变量等,支持自动类型转换。
- 内置一套强大的常用函数库
- 可自定义函数,易于扩展
- 可重载操作符
- 支持大数运算(BigInteger)和高精度运算(BigDecimal)
- 性能优秀
2 入门和安装
<properties>
<aviator.version>5.3.0</aviator.version>
</properties>
<dependency>
<groupId>com.googlecode.aviator</groupId>
<artifactId>aviator</artifactId>
<version>${aviator.version}</version>
</dependency>
3 使用范例
有两种执方式,一种通过表达式加参数的方式
public class Testdemo {
public static void main(String[] args) {
AviatorEvaluator.addFunction(new AddFunction());
System.out.println(AviatorEvaluator.execute("add(1, 2)")); // 3.0
System.out.println(AviatorEvaluator.execute("bigint(add(add(1, 2), 100))"));
}
}
另一种通过script脚本加参数的方式执行
public class Run_example {
public static void main(final String[] args) throws Exception {
// Compile the script into a Expression instance.
Expression exp = AviatorEvaluator.getInstance().compileScript("example/bigdecimal.av");
// Run the exprssion.
exp.execute();
}
}
## examples/hello.av
println("hello, AviatorScript!");
当然更多详细的内容可以去AviatorScript的文档了解。https://www.yuque.com/boyan-avfmj/aviatorscript