VBScript:Как использовать объект словаря, возвращаемый функцией?

StackOverflow https://stackoverflow.com/questions/140002

  •  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, суть та же!) здесь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top