当变量不能被直接赋值函数名时,如何使用元编程解析

当变量被直接赋值函数名时,元编程函数可以正常解析,比如

s=sum

makeCall(s,[1,2,3])

当变量被间接赋值时,无法解析

s=defs('sum').name[0], 此时s值仍为sum,但makeCall(s,[1,2,3])解析报错: 'makeCall(s, [1,2,3]) => The first argument must be a builtin or user defined function.'

请教当变量不能被直接赋值函数名时,如何使用元编程解析。

猜测可能问题出在数据类型,前者为FUNCTIONDEF, 后者为STRING,可是用cast(s,FUNCTIONDEF)转换怎么变成了2.718282?

请先 登录 后评论

1 个回答

Alex - dba

您说得对,s=defs('sum').name[0]返回的是STRING,可以用funcByName(s)把s转换为FUNCTIONDEF,因此可如下调用:

makeCall(funcByName(s),[1,2,3])
请先 登录 后评论
  • 1 关注
  • 0 收藏,596 浏览
  • Gaxia320 提出于 2023-06-17 10:35

相似问题