有没有办法在VB Script中创建可选参数,允许您编写像这样的函数...
myFunc("happy")
myFunc("happy", 1, 2, 3)
myFunc("happy", 1)
etc.
有没有办法在VB Script中创建可选参数,允许您编写像这样的函数...
myFunc("happy")
myFunc("happy", 1, 2, 3)
myFunc("happy", 1)
etc.
在VBScript中不允许使用可选关键字 (与VB6不同)
这可能会有所帮助: https://web.archive.org/web/20210304114036/http://www.4guysfromrolla.com/webtech/071801-1.shtml
你可以将其作为一个class
,并使用Public Property Let
来填充Sub
/Function
在调用它之前:
Set oSubName = New cSubName
'fill your parameters, you can always add more later
oClass.OptionalParameter1 = true
oClass.OptionalParameter2 = false
'execute sub
oSubName.Execute
Set oSubName = Nothing
显然这取决于您的环境以及它是否支持在同一文件中使用JScript和VBScript,但我已经成功地使用Windows脚本主机(*.wsf文件)实现了一些功能。
<?xml version="1.0" standalone="yes" ?>
<package xmlns="Windows Scripting Host">
<job id="param">
<?job debug="true"?>
<script language="JavaScript"></script>
<script language="vbscript"></script>
</job>
</package>
在 JScript 中定义函数并在 VBScript 中引用它是可行的。更好的方法可能是将 JScript 函数作为外部文件包含。
<script language="JavaScript" src="makestring.js"/>
<script language="vbscript">
<![CDATA[
WScript.Echo MakeString("hello", " ", "world")
WScript.Echo MakeString()
WScript.Echo MakeString(1,2,3,4)
]]>
</script>
Function myFunc(ByVal argRequired, ByVal argFields)
Field_0 = argRequired
Field_1 = "Default 1"
Field_2 = "Default 2"
Field_3 = "Default 3"
Field_4 = "Default 4"
' ...
If IsArray(argFields) Then
For I = 0 to UBound(argFields)
Select Case I
Case 0 Field_1 = argFields(I)
Case 1 Field_2 = argFields(I)
Case 2 Field_3 = argFields(I)
Case 3 Field_4 = argFields(I)
' ...
End Select
Next
Else
Field_1 = argFields
End If
' my code
End Function
myFunc("first", 100)
myFunc("first", Array(100, "third", 200, False))
Function myFunc(ByVal argFields)
Field_1 = "Default 1"
Field_2 = "Default 2"
' ...
If IsArray(argFields) Then
For I = 0 to UBound(argFields)
Select Case I
Case 0 Field_0 = argFields(I)
Case 1 Field_1 = argFields(I)
Case 2 Field_2 = argFields(I)
' ...
End Select
Next
Else
Field_0 = argFields
End If
' my code
End Function
只需传递不同的类型并查看它。
wscript.echo "1: " & math(7,8,false)
wscript.echo "2: " & math(7,8,5)
wscript.echo "3: " & math(15,false,5)
function math( Addend1 , Addend2, Divisor )
dim tmpTotal
if Addend2 then
TmpTotal = Addend1 + Addend2
else
tmpTotal = Addend1
end if
if Divisor then 'if argument Divisor is other than False then do it.
if Divisor > 0 then 'Hated Divide by Zero since VIC-20.
tmpTotal = tmpTotal / Divisor)
end if
end if
end function