VBscript中的函数是否采用可变数量的参数?

时间:2012-08-17 00:51:14

标签: syntax vbscript overloading

例如,如果我在VBscript中有一个函数:

Function sum(a, b, c)
    sum = a + b + c
End function

现在,在主要内容中,我创建了两个变量并将它们传递给函数sum,如下所示:

Dim a : a = 1
Dim b : b = 2
Call sum(a, b)

这是否有效,为什么?感谢。

4 个答案:

答案 0 :(得分:5)

它不起作用,VBScript不支持可选参数 我使用的函数接受一组数字,而不是改变参数数量来获得总和。

Function sum(nums)
    Dim i, out
    For i = 0 To UBound(nums)
        out = out + nums(i)
    Next
    sum = out
End function

Call sum(Array(1, 2, 3, 4))

答案 1 :(得分:4)

根据this,VBscript不支持可选参数。您可以执行他们建议的操作,并将空值传递给您的函数。

答案 2 :(得分:2)

我希望这可能会有所帮助。 我使用字典对象将变量传递给函数,这样我就可以添加新参数而无需重构现有代码。

dim params
set params = CreateObject("Scripting.Dictionary")

'...when I want to call a function
params.add "variable_name", value: params.add "variable_name_2", value ': ...
call fn_function_name(params)


'...declaring a function
function fn_function_name(byRef params_in)

    'here I usually make sure that variable is of correct type, or that is set
    params_in("variable_name") = fn_check(params_in("variable_name"), "number") ' fn_check is a separate function

    ' ... function code goes here ...

    ' in order to user external dictionary "params" multiple times, I empty dictionary before exiting the function. This is possible because I set it as a reference (byRef) instead of value
    params_in.removeAll()
end function

答案 3 :(得分:1)

VBScript不支持可选参数或方法重载。但是,您可以将空值传递给函数调用。