最近接到一个需求,每个配置好的公式中有诸多因子

1
2
3
# 经验获取公式
# exp 本次拾取得经验
reg: 'exp*0.25*5'

如上述配置,需要把exp提出来替换成值再进行计算。记录一下fel的简单
使用,Fel是轻量级的高效的表达式计算引擎,在开源的引擎中效率是最高的,且无任何额外学习成本

引入库

1
2
3
4
5
<dependency>
<groupId>org.eweb4j</groupId>
<artifactId>fel</artifactId>
<version>0.8</version>
</dependency>
1
2
3
4
5
6
7
8
9
   public int handler(int exp){
// 表达式
String petExpReg = BasicConfig.petExpReg;
FelContext ctx = fel.getContext();
// 设置变量exp值
ctx.set("exp",exp);
// 传入表达式,计算结果
return (int) fel.eval(petExpReg);
}

fel引擎也提供自定义函数,上下文环境等操作,不过暂时用不上,等以后再研究了
https://code.google.com/p/fast-el/ fel官网