2つの引数を持つ関数から複数の値を返すことができる関数を作成しようとしています。
例えば:
function sample_function(arg1,arg2)
''#Some code.................
passenger = list1(0)
name1 = list1(1)
age1 = list1(2)
seatNumber = list1(3)
''#This is an Incomplete function...
end function sample_function
ここで、sample_functionという名前のこの関数には、arg1、arg2という名前の2つの引数があります。ドライバースクリプトでvalue = sample_function(2、Name_person)のようにこの関数を呼び出すと、この関数はpassenger、name1、age1、seatNumberの値を返すはずです。
どうすればこれを達成できますか?
EDIT(LB): QTPはVBScriptを使用してテストルーチンを指定するため、これをVBScriptに再タグ付けしました。VBソリューションはおそらくVBScript内にあるためです。
簡単な解決策は、配列を返すことです。
function foo()
foo=array("Hello","World")
end function
x=foo()
MsgBox x(0)
MsgBox x(1)
同じ値のバッチを複数回使用する場合は、ユーザー定義のクラスにすることで費用が発生する可能性があります。
class User
public name
public seat
end class
function bar()
dim r
set r = new User
r.name="J.R.User"
r.seat="10"
set bar=r
end function
set x=bar()
MsgBox x.name
MsgBox x.seat
VBScriptでは、すべての関数パラメーターは入力/出力パラメーター(ByRefパラメーターとも呼ばれます)です。したがって、関数パラメータを使用するだけでデータを返すことができます。例:
Function Test(a, b, c)
a = 1
b = 2
c = 3
End Function
Test x, y, z
MsgBox x ' Shows 1
MsgBox y ' Shows 2
MsgBox z ' Shows 3
このように関数を宣言します。
function sample (arg1, arg2, passenger, name, age1, seatNumber) ''#Some code................. passenger = list1(0) name1 = list1(1) age1 = list1(2) seatNumber = list1(3) ''#This is an Incomplete function... end function sample
次に、それを呼び出すときに、返したい変数を入力するだけです。
新しいデータ型を作成し、それに必要なすべてのメンバーを追加できます。次に、この新しいデータ型を関数から返します。
関数から辞書オブジェクトを返すことでそれを行うことができます。
set dictFunRetun=foo()
msgbox dictFunRetun.item("Msg1")
msgbox dictFunRetun.item("Msg2")
function foo()
set fnReturn=CreateObject("Scripting.Dictionary")
fnReturn.Add "Msg1","First Variable"
fnReturn.Add "Msg2","Second Variable"
set foo=fnReturn
end function
ここの辞書では、Msg1とMsg2という名前のキーに同様に追加しました。同様に、int、Boolean、array、任意のタイプのデータなど、さまざまなタイプの値を持つキーを追加できます。
私は何も持っていない。すべてのクレジットは、私のオンラインの友人であるpradeekと別の友人の努力にかかっています。これが誰かに役立つことを願っています。
'Passing multiple numerical values from one function to another method-1
Function fnFirstFunction()
value1=1
value2=2
value3=3
A=Array(value1,value2,value3)
fnFirstFunction=A
'msgboxA(0)
'msgboxA(1)
End Function
'Belowfunction passes the value returned from the fnFirstFunction and displays
Function fnSecondFunction(ByVal A)
P=A
B=P(0)
MsgBox B
C=P(1)
Msgbox C
D=P(2)
Msgbox D
End Function
A=fnFirstFunction()
'AsfnFirstFunction returns a value, take it to a variable
Call fnSecondFunction(A)'a
'passing multiple character values from one function to another method -2
public function fun1()
msg1="Hello How are you?"
msg2="i am fine"
msg3="Hope you doing fine"
arr1=Array(msg1,msg2,msg3)
fun1=arr1
End function
arr1=fun1()
Call fun2(arr1)
public function fun2(byval arr1)
j=arr1
usermessage1=j(0)
msgbox usermessage1
usermessage2=j(1)
msgbox usermessage2
usermessage3=j(2)
msgbox usermessage3
End Function
'Passing multiple values from one function to another method-3
public function fun1()
msg1="Hello How are you?"
msg2="i am fine"
msg3="Hope you doing fine"
arr1=msg1 + "@" + msg2 + "@" + msg3
fun1=arr1
End function
arr1=fun1()
Call fun2(arr1)
public function fun2(byval arr1)
j=arr1
k= split(j,"@")
usermessage1=k(0)
msgbox usermessage1
usermessage2=k(1)
msgbox usermessage2
usermessage3=k(2)
msgbox usermessage3
End Function
これはあなたを助けます、
2つの方法で実行できます。最初の方法は、たとえばすべての値を配列として渡すことです
function message
message1="Hello How are you?"
message2="i am fine"
message3="Hope you doing fine"
message=Array(message1,message2,message3)
End function
function chat-history
user-history=message
usermessage1=user-history(0)
usermessage2=user-history(1)
usermessage3=user-history(2)
End Function
2番目の方法は連結して分割することです
function message
message1="Hello How are you?"
message2="i am fine"
message3="Hope you doing fine"
message=message1+"@"+message2+"@"+message3
End function
function chat-history
user-history=message
user-message=split(user-history,"@")
usermessage1=user-message(0)
usermessage2=user-message(1)
usermessage3=user-message(2)
End Function
list1
配列は、投稿したのと同じ方法で必要なデータのみを伝送します。次に、関数から配列を直接渡すこともできます:-
function sample_function(arg1,arg2)
''#Some code.................
passenger = list1(0)
name1 = list1(1)
age1 = list1(2)
seatNumber = list1(3)
sample_function list1
end function
辞書オブジェクトを使用することによって。これはあなたの機能です
Function sample_function(ByRef passengerDetails)
''#Some code.................
passengerDetails("passenger")=list(0)
passengerDetails("name")=list(1)
passengerDetails("age")=list(2)
passengerDetails("seatnumber")=list(3)
'#This is an Incomplete function...
end function
'Creating a dictionary object
Set passengerDetails= CreateObject("Scripting.Dictionary")
'calling your function
sample_function(passengerDetails)
ディクショナリオブジェクトを使用する利点は、関数がより多くの値を返すようにしたい場合(この関数は多くのプロジェクト/チームで使用されている)、必要な値をディクショナリオブジェクトに追加することです。さらにパラメータを追加する必要があります(この関数を使用している他の人はエラーを取得しません)