函数是否在VBScript中返回多个值?

时间:2017-04-20 03:36:53

标签: vbscript hp-uft

我们试图从单个函数返回多个值。

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 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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.