AviatorScript 函数扩展(自定义函数)

第一步 继承 并 实现 

AbstractFunction (固定参数) 或 AbstractVariadicFunction(可变参数)

第二步 添加 自定义函数

AviatorEvaluator.addFunction(new AviatorStringConcatFunction());
AviatorEvaluator.addFunction(new AviatorParseNumberFunction());

=========================================================================

固定参数 如:

转数值:parseNumber(str)
public class AviatorParseNumberFunction extends  AbstractFunction{

	@Override
    public AviatorObject call(Map<String, Object> env, AviatorObject arg1) {
	
        .......
        .......

		return new AviatorDouble(........);
	}
	
	@Override
	public String getName() {
		return "parseNumber";
	}
}

动态参数  如:

字符串拼接 :string.concat(str1, str12, str3,...)
public class AviatorStringConcatFunction extends AbstractVariadicFunction {

	@Override
    public AviatorObject variadicCall(Map<String, Object> env, AviatorObject... argArray) {

		StringBuilder sb = new StringBuilder();
		for (AviatorObject arg : argArray) {
			sb.append(arg.getValue(env));
		}

		return new AviatorString(sb.toString());
	}
	
	@Override
	public String getName() {
		return "string.concat";
	}

}

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
存储函数自定义函数是两种不同的概念。引用\[1\]中提到,存储函数是在数据库中创建的一种函数,它必须有一个return子句用于返回函数值,并且可以通过CREATE FUNCTION语句来创建。而自定义函数是指用户自己定义的函数,可以在程序中使用,但不是在数据库中创建的。引用\[2\]中提到,在MySQL中,存储过程和函数可以使用CREATE PROCEDURE和CREATE FUNCTION语句来创建,而自定义函数则可以直接在程序中定义。存储过程和函数可以通过CALL语句来调用,而自定义函数可以通过函数名来引用。此外,存储过程和函数可以有输出参数,可以返回多个值,而自定义函数通常只能返回一个标量值。根据引用\[3\]中的原则,如果只有一个返回值,通常使用存储函数;如果有多个返回值,通常使用存储过程。 #### 引用[.reference_title] - *1* *3* [Oracle数据库——存储过程和自定义函数](https://blog.csdn.net/hyh17808770899/article/details/106867758)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [八、存储过程与自定义函数](https://blog.csdn.net/qq_52059326/article/details/124399461)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值