たとえば、VBscriptに関数がある場合:
Function sum(a, b, c)
sum = a + b + c
End function
sum
ここで、主に2つの変数を作成し、次のように関数に渡します。
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
ここで、主に2つの変数を作成し、次のように関数に渡します。
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はオプションの引数をサポートしていません。彼らが提案することを実行し、関数にnull値を渡すことができます。
これが役立つことを願っています。ディクショナリ オブジェクトを使用して変数を関数に渡すので、既存のコードをリファクタリングしなくても新しい引数を追加できます。
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は、オプションの引数またはメソッドのオーバーロードをサポートしていません。ただし、関数呼び出しにnull値を渡すことはできます。