Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 调用存储在字符串变量中的函数名?_Function_Vbscript - Fatal编程技术网

Function 调用存储在字符串变量中的函数名?

Function 调用存储在字符串变量中的函数名?,function,vbscript,Function,Vbscript,我正在使用VBScript,我想知道是否有任何方法可以调用存储在字符串变量中的函数名 这是我的尝试 a = "b" sub b() msgbox "c" end sub a() 但它总是导致错误 类型不匹配“a” 看起来,例如,这应该是可行的: Dim a a = "Call b()" Eval(a) Sub b ' Do stuff End Sub 正确答案是:使用GetRef(),如下所示: 输出: aa 246 非常感谢你的帮助@用户433531请查看Ekkeh

我正在使用VBScript,我想知道是否有任何方法可以调用存储在字符串变量中的函数名

这是我的尝试

a = "b"

sub b() 
    msgbox "c"
end sub

a()
但它总是导致错误

类型不匹配“a”


看起来,例如,这应该是可行的:

Dim a
a = "Call b()"
Eval(a)

Sub b
   ' Do stuff
End Sub

正确答案是:使用GetRef(),如下所示:

输出:

aa
246

非常感谢你的帮助@用户433531请查看Ekkehard.Horner的答案,
GetRef
是正确(安全)的方法
Eval
不安全,使用全局作用域,速度慢,并且无法在函数中轻松传递参数。由GetRef创建的函数指针可以作为对象传递,这是一个巨大的pro;任务是通过函数名调用函数。请您详细说明您的答案,并添加有关您提供的解决方案的更多描述,好吗?
aa
246
Dim x

Sub b

 print "xxx"' Do stuff
End Sub

x = "call b()"

Execute(eval("x"))