VBScript: Wie ein Wörterbuch Objekt aus einer Funktion zurück utiliize?
-
02-07-2019 - |
Frage
Ich versuche, ein Wörterbuch aus einer Funktion zurückzukehren. Ich glaube, die Funktion ordnungsgemäß funktioniert, aber ich bin nicht sicher, wie das zurückgegebene Wörterbuch nutzen.
Hier ist der relevante Teil meiner Funktion:
Function GetSomeStuff()
'
' Get a recordset...
'
Dim stuff
Set stuff = CreateObject("Scripting.Dictionary")
rs.MoveFirst
Do Until rs.EOF
stuff.Add rs.Fields("FieldA").Value, rs.Fields("FieldB").Value
rs.MoveNext
Loop
GetSomeStuff = stuff
End Function
Wie kann ich diese Funktion aufrufen und das zurückgegebene Wörterbuch benutzen?
EDIT: Ich habe versucht, dies:
Dim someStuff
someStuff = GetSomeStuff
und
Dim someStuff
Set someStuff = GetSomeStuff
Wenn ich versuche, someStuff zuzugreifen, erhalte ich eine Fehlermeldung:
Microsoft VBScript runtime error: Object required: 'GetSomeStuff'
EDIT 2: Der Versuch, dies in der Funktion:
Set GetSomeStuff = stuff
Ergebnisse in diesem Fehler:
Microsoft VBScript runtime error: Wrong number of arguments or invalid property assignment.
Lösung
Ich war nicht ganz sicher, was war dein Problem, so experimentierte ich ein wenig.
Es scheint, dass Sie nur, dass verpassten einen Verweis auf ein Objekt zuweisen, haben Sie set
zu verwenden, auch für einen Rückgabewert:
Function GetSomeStuff
Dim stuff
Set stuff = CreateObject("Scripting.Dictionary")
stuff.Add "A", "Anaconda"
stuff.Add "B", "Boa"
stuff.Add "C", "Cobra"
Set GetSomeStuff = stuff
End Function
Set d = GetSomeStuff
Wscript.Echo d.Item("A")
Wscript.Echo d.Exists("B")
items = d.Items
For i = 0 To UBound(items)
Wscript.Echo items(i)
Next
Andere Tipps
Haben Sie versucht zu tun
set GetSomeStuff = stuff
in der letzten Zeile der Funktion?
Haben Sie versucht:
Dim returnedStuff
Set returnedStuff = GetSomeStuff()
Dann "For Each" Iterieren über das Wörterbuch? Es ist ein Beispiel für das Wörterbuch mit (wenn auch für VB6, der Kern ist es die gleiche aber!) hier .