10

我正在尝试从函数返回字典。我相信该功能可以正常工作,但我不确定如何使用返回的字典。

这是我的功能的相关部分:

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.
4

3 回答 3

25

我不太确定你的问题是什么,所以我做了一些实验。

看来您只是错过了为对象分配引用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
于 2008-09-26T15:18:29.117 回答
4

你试过
set GetSomeStuff = stuff
在函数的最后一行做吗?

于 2008-09-26T15:14:43.977 回答
0

你有没有尝试过:

Dim returnedStuff
Set returnedStuff = GetSomeStuff()

然后“For Each”遍历字典?这里有一个使用字典的例子(尽管是 VB6,但它的要点是一样的!

于 2008-09-26T15:02:22.370 回答