2009-12-11 6 views

Trả lời

11

Từ khóa tùy chọn (như trong VB6) không được phép trong VBScript

có lẽ đây sẽ giúp: http://www.4guysfromrolla.com/webtech/071801-1.shtml

+0

Sắp xếp. Lý tưởng nhất là tôi đã hy vọng tránh sử dụng một đối số mảng hoặc null được cung cấp cho hàm. Đoán nó là không thể với VB script. Cảm ơn đã giúp đỡ. –

3

Làm thế nào về overloading?

+2

Một lần nữa sắp xếp. Bạn vẫn phải sử dụng một mảng hoặc kiểm tra null trên các tham số. Đoán đó là kịch bản vb tốt nhất cung cấp. Cảm ơn đã giúp đỡ. –

+0

vbscript không cung cấp quá tải thực. –

1

Obviosly này phụ thuộc vào môi trường của bạn và liệu nó hỗ trợ sử dụng cả hai JScript và VBScript trong cùng một tập tin, nhưng tôi đã có một số thành công sử dụng Windows Script host (* file .wsf), tức là

<?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> 

nơi bạn có thể xác định chức năng của bạn trong JScript và tham khảo nó trong VBScript. Một cách tốt hơn có thể là bao gồm các hàm JScript của bạn dưới dạng tệp ngoài tức là

<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> 
-4

Chỉ cần vượt qua một loại khác và tìm kiếm.

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 
2

Bạn luôn có thể làm cho nó một class và sử dụng Public Property Let để cư trú của bạn Sub/Function trước khi gọi nó:

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 

này sẽ đòi hỏi một số kiến ​​thức về cách làm cho lớp học, nhưng có lẽ là tiếp theo giải pháp tốt nhất để sử dụng mảng.

Chúc may mắn.