如何编写Aviator自定义函数

本文最后更新于2018年4月25日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

缘由:

整理、总结一下编写Aviator自定义函数的方法和过程,方便以后参考。

正文:

参考解答:

Aviator 除了内置的函数之外,还允许用户自定义函数,只要实现 com.googlecode.aviator.runtime.type.AviatorFunction 接口,并注册到 AviatorEvaluator 即可使用。AviatorFunction 接口十分庞大,通常来说你并不需要实现所有的方法,只要根据你的方法的参 数个数,继承 AbstractFunction 类并 override 相应方法即可。

注册函数通过 AviatorEvaluator.addFunction 方法,移除可以通过 removeFunction。另外, FunctionUtils 提供了一些方便参数类型转换的方法。

如果你的参数个数不确定,可以继承 AbstractVariadicFunction 类,只要实现其中的 variadicCall 方法即可。比如我们实现一个找到第一个参数不为 null 的函数:

注册后使用就可以传入不定参数了:

当然,同时你仍然覆写特定的 call 方法来自定义实现。


一个样例:

 

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/3884.html

《如何编写Aviator自定义函数》上有1条评论

  1. 因为 IpAddressMatcher 对于输入的字符串格式要求很高,所以,最好在传入参数之前,做足格式校验和规范(首尾空格删除trim()/正则格式匹配match()),尽量将不符合规范的输入过滤掉;同时加入try..except避免错误输入导致的异常使程序正常运行受影响。

    ipStr.trim();
    ipList.trim();

hi进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注