2017-04-20 61 views
-1

我們試圖從單個函數返回多個值。函數在VBScript中返回多個值嗎?

Sub testing() 
    a = 2 
    b = 5 
    temp = func(a, b) 
    MsgBox temp 
End Sub 

Function func(a, b) 
    'we are validating the multiple returns from the function 
    func = a + b 
    func = a * b 
    func = b/a 
End Function 

回答

2

是的,通過使用Array函數,您可以從單個函數返回多個值。

Function func(a, b) 
    mul = a * b 
    div = a/b 
    add = a + b 
    sub = a - b 
    func = Array(mul, div, add, sub) 
End Function 

然後調用函數,如:

val = func(3,4) 

print val(0) 'will give multiply of 3*4 = 12 
print val(1) 'will give division 
print val(2) 'will give addition 
print val(3) 'will give subtraction. 
3

VBScript函數只返回一個值。如果您分配了多個值的函數名,如你的例子:

func = a + b 
func = a * b 
func = b/a 

只有最後一個值(b/a結果)將被退回。

要讓函數返回多個值,需要將值包裝到數據結構中並返回該數據結構。這可能是一個數組

func = Array((a+b), (a*b), (b/a)) 

字典

Set d = CreateObject("Scripting.Dictionary") 
d.Add "add", (a+b) 
d.Add "mul", (a*b) 
d.Add "div", (b/a) 

Set func = d 

自定義對象

Class CData 
    Public add, mul, div 
End Class 

... 

Set c = New CData 
c.add = a+b 
c.mul = a*b 
c.div = b/a 

Set func = c 

一個ArrayList

Set a = CreateObject("System.Collections.ArrayList") 
a.Add (a+b) 
a.Add (a*b) 
a.Add (b/a) 

Set func = a 

或一些其它集合。

注意,返回對象,你需要使用Set關鍵字分配函數的返回值時:

Set temp = func(a, b)