VBでは関数宣言の引数の前にOptionalをつけることによって、その引数を省略可能にすることが出来ますが、VBScriptにはその機能が実装されていません。
Optional Parameters (Visual Basic)
VBScriptでこれと同等なことをしようとした場合は、例えば関数を呼び出すときに後半の引数を Null
にするなどして対応します。
Function Func(hoge, fuga, piyo)
If piyo = Null
piyo = "default value"
End If
' Body
End Function
Call Func(hoge, fuga, Null)
しかし、この方法ですと引数を省略するための Null
なのか、それとも Null
という値を関数の引数にしたいのかが曖昧です。
解決策
Array関数を使う。
Array関数
Array関数はVBscriptの組み込み関数の中でも特殊な関数で、可変個の引数を渡すことが出来ます。
そのため、Array関数を上手く使うことによって、関数を呼び出す側の引数リストに Null
を書かなくても良いようになります。
しかし、関数定義がかなりキモい感じになる上に、関数シグニチャから引数に関する情報を得ることができなくなってしまします。
メリットとデメリットを比較するとあまり積極的に使いたくはないですが、もしものときのテクニックとしてご参考までに。
Function Func(arrArgs)
Dim hoge, fuga, piyo
piyo = "default value"
Select Case UBound(arrArgs)
Case 1
hoge = arrArgs(0)
fuga = arrArgs(1)
Case 2
hoge = arrArgs(0)
fuga = arrArgs(1)
piyo = arrArgs(2)
Case Else
' エラー処理
Exit Function
End Select
' Body
End Function
Call Func(Array(hoge, fuga))