我当前的工作项目允许在特定的上下文中评估用户提供的表达式,作为他们扩展和影响工作流的一种方式.这些表达式通常是逻辑上的.为了使它对非程序员来说有点可口,我想给他们选择使用文字运算符(例如和,或者,而不是代替&,|,!).
简单的搜索和替换是不够的,因为数据可能包含引号内的那些单词并构建解析器,尽管可行,但可能不是最优雅和有效的解决方案.
要明确问题:Groovy中是否有一种允许用户编写的方法
x > 10 and y = 20 or not z
Run Code Online (Sandbox Code Playgroud)
但是让Groovy对它进行评估,好像它是:
x > 10 && y == 20 || !z
Run Code Online (Sandbox Code Playgroud)
谢谢.
GDK对布尔值进行了补充and()和or()方法。如果您提供了类似的方法
Boolean not(Boolean b) {return !b}
Run Code Online (Sandbox Code Playgroud)
你可以写类似的东西
(x > 10).and(y == 20).or(not(4 == 1))
Run Code Online (Sandbox Code Playgroud)
不过,我不确定这是否特别容易写。
| 归档时间: |
|
| 查看次数: |
29610 次 |
| 最近记录: |