您说得对,s=defs('sum').name[0]返回的是STRING,可以用funcByName(s)把s转换为FUNCTIONDEF,因此可如下调用:
makeCall(funcByName(s),[1,2,3])
当变量被直接赋值函数名时,元编程函数可以正常解析,比如
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?