我正在使用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