Есть ли способы создания необязательных аргументов для функций в 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.
Необязательное ключевое слово (как в VB6) не разрешено в vbscript
возможно, это помогает: http://www.4guysfromrolla.com/webtech/071801-1.shtml
Как насчет overloading?
Вы всегда можете сделать это 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
Это потребует некоторых знаний о том, как создавать классы, но, вероятно, является лучшим решением для использования массивов.
Удачи.
Obviosly это зависит от вашей среды и поддерживает ли она использование как JScript, так и VBScript в одном файле, но у меня был некоторый успех с использованием Windows Script Host (*.wsf файлов), то есть
<?xml version="1.0" standalone="yes" ?>
<package xmlns="Windows Scripting Host">
<job id="param">
<?job debug="true"?>
<script language="JavaScript">
<![CDATA[
function MakeString(args) {
var s = [];
for(var i = 0, length = arguments.length; i < length; i++)
s.push(arguments[i]);
return s.join('');
}
]]>
</script>
<script language="vbscript">
<![CDATA[
WScript.Echo MakeString("hello", " ", "world")
WScript.Echo MakeString()
WScript.Echo MakeString(1,2,3,4)
]]>
</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>
Просто передайте другой тип и посмотрите его.
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