例如,如果我在 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)
这是否可行,为什么?谢谢。
例如,如果我在 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)
这是否可行,为什么?谢谢。
它不起作用,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))
据此, VBscript 不支持可选参数。您可以执行他们的建议并将空值传递给您的函数。
我希望这可能会有所帮助。我使用字典对象将变量传递给函数,因此我可以添加新参数而无需重构现有代码。
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
VBScript 不支持可选参数或方法重载。但是,您可以将空值传递给您的函数调用。