🔥 Liquor 表达式引擎基本使用(v1.2.7)


引入依赖

<dependency>
<groupId>org.noear</groupId>
<artifactId>liquor-eval</artifactId>
<version>1.2.7</version>
</dependency>

liquor 表达式引擎(ExpressionEvaluator)支持 java 所有的类型、及所有语法(比如泛型,lambda 表达式)。因为,它是基于 java 动态编译器及缓存构建的。

零依赖,包大小约为 36 KB。

实例化表达式引擎(全局可复用,线程安全)

ExpressionEvaluator evaluator = new ExpressionEvaluator();

常量表达式计算演示

// 数学运算 (Long)
String exp1 = "1+2+3";
Integer result = (Integer) evaluator.eval(exp1);
System.out.println(result); // 6

// 数学运算 (Double)
String exp4 = "1.1+2.2+3.3";
Double result2 = (Double) evaluator.eval(exp4);
System.out.println(result2); // 6.6


// 包含关系运算和逻辑运算
String exp2 = "(1>0||0<1)&&1!=0";
System.out.println(evaluator.eval(exp2)); // true


// 三元运算
String exp3 = "4 > 3 ? \"4 > 3\" : 999";
System.out.println(evaluator.eval(exp3)); // 4 > 3

变量表达式计算演示

Map<String, Object> bindings = new HashMap<>();
bindings.put("a", 1);
bindings.put("b", 2);

evaluator.eval("(a + b) * 2", bindings);

函数库调用演示

不支持自定义函数,但可以使用整个 JDK 里的类,及自己定义类。

CodeSpec exp5 = new CodeSpec("Math.min(1,2)").imports(Math.class);
System.out.println(evaluator.eval(exp5));

相關推薦

2024-10-16

持lambda和泛型了。所以我也是没辙。 这次新的Javax采用Liquor框架的方案,支持了java8到java21中所有的用法,多谢solon作者提供Liquor底层的技术支持,才得以让LF解决了一个困扰多时的问题。使得Java脚本得到了一次大的升级! 如

2022-09-14

文本渲染、图像格式(PNG、JPG、GIF,...) LibRegex:正则表达式引擎 LibXML : XML 解析器 LibWasm:WebAssembly 解析器和解释器 LibUnicode:Unicode 支持库 LibTextCodec : 文本编码转换库 LibMarkdown : Markdown 解析器 LibCore:其他支持功能

2024-09-22

文件系统 v1.4.6 发布,修复删除空目录引起的bug 注意:使用前请认真阅读 使用文档 或 视频教程。 优点 支持 curl 命令上传 支持浏览器上传 支持 HTTP 下载 支持多机自动同步 支持断点下载 支持 https 支持配

2023-08-01

👑I7NHQI:[PRO]子流程支持数据回流 👑I7NLNE:用spring的el表达式替换beetl 👑I7NOMM:支持地区表单 👑I7NOMS:支持评分表单 👑I7NYZR:新添加表单:用户任务中默认处理成只读 👑I7P0P9:终止流程改为撤销 👑I7P13I:支持条件字段判

2024-09-28

文件名特殊字符)enable_trim_file_name_special_char选项 注意:使用前请认真阅读 使用文档 或 视频教程。 优点 支持 curl 命令上传 支持浏览器上传 支持 HTTP 下载 支持多机自动同步 支持断点下载 支持 https 支持

2023-04-19

Servo 是使用 Rust 开发的实验性浏览器引擎,最初由 Mozilla 发起,与其他浏览器引擎相比,Servo 在内存安全性、速度和并发性方面具有优势。 2020 年 Mozilla 大裁员期间裁掉了 Servo 引擎团队,Servo 的开发此后陷入了停滞。后来,Serv

2023-03-24

主要为了增加一个新的脚本语言扩展Aviator和支持了循环表达式的嵌套循环增强。 支持Aviator脚本语言 首先介绍下Aviator。 Aviator是非常优秀的国产表达式引擎开源框架。文档详细,性能优秀,整个解析过程最多扫2次,保证了它

2024-10-25

包形式快速集成到项目,减少繁琐代码搬运和适配 条件表达式:内置常见的和spel条件表达式,并且支持自定义扩展 办理人变量表达式:内置${handler}和spel格式的表达式,可满足不同场景,灵活可扩展 orm框架扩展:目前支持

2023-07-13

文档 源码 在线体验 模板性能测试 表达式引擎性能测试  性能优化指南  最新模板性能测试,各个模板引擎均采用最新版本, Score 越大越好 Beetl>Rocker>>Freemarker>>Thymeleaf==Velociy Bench

2024-07-31

tion 13365:修复编辑游戏棋子图像时的 NPE 13360:将正则表达式运算符参数强制为字符串,以防止出现错误数据错误 13339:游戏加载期间防止 NPE 13336:当棋子被添加到堆栈时,Auto-attach 不会附加到自身 13324:修复了参考手

2023-05-08

样简单。 详细介绍:Ambient-Rust 编写的高性能多人游戏引擎 0.2 版本主要变化: 对播放声音的基本支持 除了服务器端,WASM 现在还可以在客户端运行 服务器由 Ambient Proxy 自动代理,允许任何拥有 URL 的人进行连接

2023-12-12

引擎 文档 源码 在线体验 模板性能测试 表达式引擎性能测试  性能优化指南  本次调整 *  修复自从2019年Beeetl2升级到Beetl3,不支持自定义方法提供的Context参数问题修复 public class MyUtil{ // 模板中 $

2023-04-12

定了一个版本特性。 LiteFlow 2.10.2的版本特性就是与或非表达式。 除此之外,我们还增强了一些内容,修复了社区提出的bug。一共5个issue,作为此次小版本迭代的组成部分。 与或非表达式 社区里一直有人反应,条件编排能否

2023-01-31

IMP 3.0 的 API 开发工作在去年也取得了不小的进展。 图形引擎方面,babl 中用于颜色转换的自动 LUT 创建向前迈出了一大步,此特性最初在 GIMP 2.99.10 引入,然后添加到 稳定版本 2.10.32。同时,所有 babl、GEGL 和 ctx 都进