aviatorscript
aviatorscript copied to clipboard
表达式或者变量复用
我现在使用aviator进行实现一个自定义的规则引擎,通过对一些逻辑表达式求值,得出最终结果。 现在有个问题是这些逻辑表达式中,有一部分是开放给用户可以编辑的,有一部分是不能编辑的。 例如现在有一个逻辑表达式:速度>0&&速度<50&&信号灯==绿灯 我需要将“速度>0&&速度<50”提取出来作为一个变量,让用户可以修改速度范围,在编译表达时将这部分提取出来的表达式替换进行编译。目前想到的办法是字符串替换,定义一个变量a值为“速度>0&&速度<50”,表达式变为#{a}&&信号灯==绿灯,在编译之前将#{a}替换为对应表达式。但是感觉这种方式不够优雅,有没有更优雅的实现办法。谢谢。
还想到一个办法是动态添加自定义函数,在编译前将作为变量的表达式添加为函数,key作为函数名,在引用的地方用函数方式调用,不知道这种方式会不会更好,求解答。