VBScript:Как использовать объект словаря, возвращаемый функцией?
-
02-07-2019 - |
Вопрос
Я пытаюсь вернуть словарь из функции.Я считаю, что функция работает правильно, но не знаю, как использовать возвращенный словарь.
Вот соответствующая часть моей функции:
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
Как мне вызвать эту функцию и использовать возвращенный словарь?
РЕДАКТИРОВАТЬ:Я пробовал это:
Dim someStuff
someStuff = GetSomeStuff
и
Dim someStuff
Set someStuff = GetSomeStuff
Когда я пытаюсь получить доступ к someStuff, я получаю сообщение об ошибке:
Microsoft VBScript runtime error: Object required: 'GetSomeStuff'
РЕДАКТИРОВАТЬ 2:Пробуем это в функции:
Set GetSomeStuff = stuff
Результаты этой ошибки:
Microsoft VBScript runtime error: Wrong number of arguments or invalid property assignment.
Решение
Я не был уверен в том, в чем ваша проблема, поэтому немного поэкспериментировал.
Похоже, вы просто пропустили, что для назначения ссылки на объект вам нужно использовать set
, даже для возвращаемого значения:
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
Другие советы
Вы пробовали делать
set GetSomeStuff = stuff
в последней строке функции?
Попытался ли ты:
Dim returnedStuff
Set returnedStuff = GetSomeStuff()
Затем «Для каждого» перебирает словарь?Есть пример использования Словаря (хотя и для VB6, суть та же!) здесь.