Подтвердить что ты не робот

Существуют ли способы создания необязательных аргументов для функций в vb script?

Есть ли способы создания необязательных аргументов для функций в vb script, позволяющих вам писать функции вроде...

myFunc("happy")
myFunc("happy", 1, 2, 3)
myFunc("happy", 1)
etc.
4b9b3361

Ответ 3

Вы всегда можете сделать это 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

Это потребует некоторых знаний о том, как создавать классы, но, вероятно, является лучшим решением для использования массивов.

Удачи.

Ответ 4

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>

Ответ 5

Просто передайте другой тип и посмотрите его.

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