我正在使用VBScript,我想知道是否有任何方法来调用存储在字符串变量中的函数名称?调用存储在字符串变量中的函数名称?
这是我的尝试?
a = "b"
sub b()
msgbox "c"
end sub
a()
但它总是导致错误
类型匹配 '一'
我正在使用VBScript,我想知道是否有任何方法来调用存储在字符串变量中的函数名称?调用存储在字符串变量中的函数名称?
这是我的尝试?
a = "b"
sub b()
msgbox "c"
end sub
a()
但它总是导致错误
类型匹配 '一'
好像例如这应该工作:
Dim a
a = "Call b()"
Eval(a)
Sub b
' Do stuff
End Sub
正确的答案是:使用GetRef(),如:
Function F(p)
F = p + p
End Function
Dim FP : Set FP = GetRef("F")
WScript.Echo FP("a")
WScript.Echo FP(123)
输出:
aa
246
Dim x
Sub b
print "xxx"' Do stuff
End Sub
x = "call b()"
Execute(eval("x"))
VBScript中没有打印;任务是通过其名称调用一个函数。 –
您能详细解释一下您提供的解决方案吗? – abarisone
非常感谢您的帮助! – Teiv
@ user433531请看Ekkehard.Horner的答案,'GetRef'是正确(并且安全!)的方式。 'Eval'不安全,使用全局作用域,速度很慢,你不能轻易地在你的函数中传递参数。而由GetRef创建的函数指针可以作为一个对象传递,这是一个巨大的职业。 – AutomatedChaos