下面是VBS代碼,它提供了與VBA中的ParamArray
修飾符相同的功能:它允許傳遞任意數量的參數,並且調用函數接收傳遞的參數作爲數組。它使用ScriptControl的JScript的arguments
財產準備的參數數組。
Dim oSC, Echo
Set oSC = CreateObject("MSScriptControl.ScriptControl")
oSC.Language = "JavaScript"
oSC.AddCode "echo = function() {var dict = new ActiveXObject('Scripting.Dictionary'); for(var i=0; i<arguments.length; i++) {dict.add(i, arguments[i]);} echoArr(dict.Items());}"
oSC.AddObject "echoArr", GetRef("EchoArr"), True
Set Echo = oSC.Eval("echo")
Echo "one", "two", "three"
Echo "True variadic sub"
Function EchoArr(arr)
WScript.Echo Join(arr)
End Function
要調用WScript.Echo
在可變參數方法的方式,你可以使用Execute
,並與下面的代碼替換上述代碼EchoArr
功能(但我不知道它有實用價值):
Function EchoArr(arr)
Dim s, i
s = "WScript.Echo "
i = 0
For i = 0 to UBound(arr)
s = s & "arr(" & i & ")"
If i < UBound(arr) Then s = s & ", "
Next
Execute s
End Function
你是不是想創建一個'printf'樣式函數,其中佔位符被替換爲值? – Bond 2014-09-25 13:43:20
@Bond如果我理解正確,不。我只是試圖爲Echo函數創建別名。基於Echo,與其他名稱相同的功能。我只是從我的功能調用Echo。問題是如何正確傳遞參數。 – 2014-09-25 13:50:37