QTP指令碼編寫技巧 - 從函式中返回多個值的方法

TIB發表於2010-03-22

relevantcodes.com的《Passing Multiple Values from Functions》這篇文章介紹瞭如何從函式(Function)中返回多個值:

http://relevantcodes.com/passing-multiple-values-from-functions/

 

第一種方法是利用全域性變數,因此根本不用返回,只要直接給全域性變數賦值即可。

例:

Dim intNumber_1: intNumber_1 = 40

Dim intNumber_2: intNumber_2 = 80

 

Public Sub PassValues

    intNumber_1 = intNumber_1/4

    intNumber_2 = intNumber_2/4

End Sub

 

PassValues

 

MsgBox "intNumber_1 = " & intNumber_1 &_

    vbLf & "intNumber_2 = " & intNumber_2

 

 

第二種方法是用返回一個Dictionary集合的方式來返回多個值。

例:

Public Function PassValues(ByVal Num_1, ByVal Num_2)

    Set oDict = CreateObject( "Scripting.Dictionary" )

 

    With oDict

        .Add "Num_1", Num_1/4

        .Add "Num_2", Num_2/2

    End With

 

    Set PassValues = oDict

End Function

 

Set colNumbers = PassValues(40,80)

 

MsgBox "intNumber_1 = " & colNumbers.Item("Num_1") &_

    vbLf & "intNumber_2 = " & colNumbers.Item("Num_2")

 

 

第三種方法是用返回一個陣列的方式來返回多個值。

例:

Public Function PassValues(ByVal Num_1, ByVal Num_2)

    Dim arrArray: ReDim arrArray(2)

 

    arrArray(0) = Num_1/4

    arrArray(1) = Num_2/2

 

    PassValues = arrArray

End Function

 

arrNew = PassValues(40,80)

 

MsgBox "intNumber_1 = " & arrNew(0) &_

    vbLf & "intNumber_2 = " & arrNew(1)

 

 

第四種方法是將需要返回的值連線到一個字串來返回,這種方法要求接收資料的呼叫者需要用Split來切割出一個個資料。

例:

Public Function PassValues(ByVal Num_1, ByVal Num_2)

    Num_1 = Num_1/4

    Num_2 = Num_2/2

 

    PassValues = Num_1 & "," & Num_2

End Function

 

sNum = PassValues(40,80)

 

MsgBox "intNumber_1 = " & Split(sNum, ",")(0) &_

    vbLf & "intNumber_2 = " & Split(sNum, ",")(1)

 

 

第五種方法是通過ByRef關鍵字指定引數為引用,這種方法與用全域性變數的方法類似,也是直接修改值,不同返回。

例:

Dim intNumber_1: intNumber_1 = 40

Dim intNumber_2: intNumber_2 = 80

 

Public Sub PassValues(ByRef Num_1, ByRef Num_2)

    Num_1 = Num_1/4

    Num_2 = Num_2/2

End Sub

 

PassValues intNumber_1, intNumber_2

 

MsgBox "intNumber_1 = " & intNumber_1 &_

    vbLf & "intNumber_2 = " & intNumber_2

相關文章