package com.zt.life.modules.mainPart.test.service;
|
|
import com.googlecode.aviator.AviatorEvaluator;
|
import com.googlecode.aviator.runtime.function.AbstractFunction;
|
import com.googlecode.aviator.runtime.function.FunctionUtils;
|
import com.googlecode.aviator.runtime.type.AviatorDouble;
|
import com.googlecode.aviator.runtime.type.AviatorObject;
|
import org.junit.Test;
|
|
import java.beans.Expression;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
public class testService {
|
|
public static void main(String[] args) {
|
// 注册函数
|
AviatorEvaluator.addFunction(new AddFunction());
|
|
// 创建参数映射
|
Map<String, Object> paramMap = new HashMap<>();
|
paramMap.put("a", 5);
|
paramMap.put("b", 2);
|
|
// 执行表达式
|
Object result = AviatorEvaluator.execute("add(a, b)", paramMap);
|
|
System.out.println("Result: " + result);
|
}
|
|
static class AddFunction extends AbstractFunction {
|
@Override
|
public AviatorObject call(Map<String, Object> env, AviatorObject arg1, AviatorObject arg2) {
|
Number left = arg1.numberValue(env);
|
Number right = arg2.numberValue(env);
|
|
// 执行数学计算
|
double result = (Math.pow(left.doubleValue(), right.doubleValue()) + Math.sqrt(right.doubleValue()) - Math.log(right.doubleValue())) /
|
(Math.pow(right.doubleValue(), left.doubleValue()) + Math.log10(left.doubleValue()));
|
|
return new AviatorDouble(result);
|
}
|
|
@Override
|
public String getName() {
|
return "add";
|
}
|
}
|
}
|