aviatorscript
aviatorscript copied to clipboard
A high performance scripting language hosted on the JVM.
我的集群,有时候启动的时候会报这个错,com.googlecode.aviator.exception.FunctionNotFoundException: Function not found: list.contains at com.googlecode.aviator.RuntimeFunctionDelegator.getFunc(RuntimeFunctionDelegator.java:328) ~[aviator-5.2.6.jar:?] at com.googlecode.aviator.RuntimeFunctionDelegator.call(RuntimeFunctionDelegator.java:64) ~[aviator-5.2.6.jar:?] at Script_1723446112789_58/331705019.execute0(Script_1723446112789_58:1) ~[?:?] at com.googlecode.aviator.ClassExpression.executeDirectly(ClassExpression.java:67) ~[aviator-5.2.6.jar:?] at com.googlecode.aviator.BaseExpression.execute(BaseExpression.java:212) ~[aviator-5.2.6.jar:?] at com.googlecode.aviator.AviatorEvaluatorInstance.execute(AviatorEvaluatorInstance.java:1603) ~[aviator-5.2.6.jar:?] 重启一下就好了,并且我已经注册了list.contains这个函数,并且com.googlecode.aviator.AviatorEvaluatorInstance#addStaticFunctions返回值日志已经打印了加载到了list.contains这个函数,每次遇到重启就好了,这是什么问题呢
在aviator脚本中使用Math.round()函数遇到了下面的问题: 1. 如果输入的参数是一个整数,执行就会抛出:IllegalArgumentException; 2. 如果输入的参数是Double.MAX_VALUE,计算的结果会丢失精度。 查看源码Reflector#paramArgTypeMatch,发现传入的是一个整数那么就无法匹配到Math.round(),传入的是一个Double类型的数值,始终匹配到是Math.round(float a),这里可能会造成精度丢失。 我按照基本数据类型自动向上提升的原则,尝试修改了Reflector#paramArgTypeMatch的匹配规则,经过测试发现能达到预期的效果。 希望作者能够帮忙看看,我这种调整会引入其他的问题和潜在的风险点吗?
Hello
我看之前有弄过一次英文文档,不过好像是在迁语雀之前? 现在GitHub这边即使看英文版的Readme,点开用户指南还是中文的,这块有考虑继续提供双语吗?谢谢!
if(!conditionFlag) { return nil; } let modelSchedulerNewFlag = include(modelSchedulerNewServiceTypeSet, serviceType); let result=commonQueryModelResultMethodV2(serviceType,serviceName,"EXTRA_DATA",request,true, modelSchedulerNewFlag); if(result != nil){ return result.score; } return nil; **result参数怎么也被解析出来了** ![Uploading image.png…]()
server start, AviatorEvaluator.addFunction(abstractFunction); abstractFunction is my function. when server run, has error: Function not found
Java代码大体如下: String expression = "return a==nil ? \"nothing\" : \"something\";"; Expression compiledExp = AviatorEvaluator.compile(expression, true); Map envMap = ImmutableMap.of("a", 1); Object result = compiledExp.execute(envMap); 此时可以正确返回“something”, 若expression换成"return $src==nil ? \"nothing\" :...
需要部分执行公式 例如:"a>1?c+d:c-d"、"f*(a>1?c+d:c-d)" 需要先用a值计算当前公式获得c+d或者f*(c+d),然后在后续再执行后续公式;
aviator的求指数运算,为何会在底数是BigInt和BigDecimal时,直接将指数取整? 例如2 ** 0.2355,在将ALWAYS_PARSE_FLOATING_POINT_NUMBER_INTO_DECIMAL设置为true时,无法返回正确结果。  MathPowFunction的实现也有相同行为,请问是否符合预期?是否有什么特殊的考虑?