VBScript: как использовать объект словаря, возвращаемый функцией? - PullRequest
8 голосов
/ 26 сентября 2008

Я пытаюсь вернуть словарь из функции. Я считаю, что функция работает правильно, но я не уверен, как использовать возвращенный словарь.

Вот соответствующая часть моей функции:

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.

Ответы [ 3 ]

23 голосов
/ 26 сентября 2008

Я не был слишком уверен, в чем была ваша проблема, поэтому я немного поэкспериментировал.

Похоже, что вы только что пропустили, чтобы назначить ссылку на объект, вы должны использовать 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
4 голосов
/ 26 сентября 2008

Вы пытались сделать
set GetSomeStuff = stuff
в последней строке функции?

0 голосов
/ 26 сентября 2008

Вы пробовали:

Dim returnedStuff
Set returnedStuff = GetSomeStuff()

Тогда "Для каждого" перебирая словарь? Есть пример использования словаря (хотя и для VB6, хотя суть его та же!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...