我知道这没有任何意义。 但不过。
我想创建WScript.Echo的完整副本
我的方法是用另一个短名称创建函数。
Sub print(arguments)
WScript.Echo arguments
End Sub
在WScript.Echo中,参数是字符串数组WScript.Echo Arg1, Arg2, Arg3... Optional string values to be displayed.
(可能不是数组,但它看起来像字符串列表)
我的问题是如何将相同的参数传递给我的函数?或者可能是一般情况下不可能。
答案 0 :(得分:1)
WScript.Echo是一个variadic Sub(采用任意数量的参数)。你不能在VBScript中编写这样的函数/子/方法。在VBA中,您可以使用Parameter Array或Optional关键字。
对于VBScript:您可以编写一个Sub,它将数组a作为唯一参数并WScript.Echo Join(a)
,但我怀疑
print Array(...)
值得(1 **字母来打字)努力。
更新:**显然我无法计算。
答案 1 :(得分:1)
下面是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
函数(但我不确定它是否具有实用价值):< / p>
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