首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在scripting.dictionary中重写数组

在scripting.dictionary中重写数组
EN

Stack Overflow用户
提问于 2015-12-29 23:40:39
回答 1查看 765关注 0票数 1

我正在尝试创建一个字典,每个键都是我创建的一个名称,每个项都是一个包含三个对象的数组:一个字符串、一个整数和一个SOAP请求结果数组。

我像这样初始化数组:

代码语言:javascript
复制
Dim riskDict As New Scripting.Dictionary
riskDict.Add "Weight", Array("WP", 0, Array())

我有一个函数,'getTheRisk',它返回一个Xx4数组(它是一个SOAP请求。我不知道会返回多少结果,但每个结果将返回四个值。)

然后,我想将结果存储到字典中该项的第三个元素中,尝试如下所示:

代码语言:javascript
复制
For i = 0 To riskDict.count - 1
  riskDict.Items(i)(2) = getTheRisk(myDate.Value, myPort.Value, riskDict.Items(i)(0))
Next i

这段代码编译并运行得很好,但是在分配数组之后,它在字典中显示为空:

getTheRisk函数返回如下内容:

如何将dict中的数组设置为SOAP请求的结果?

EN

回答 1

Stack Overflow用户

发布于 2015-12-30 00:43:50

我找到了一种解决方法。我只用两个元素初始化项,然后redim,并在发送SOAP请求并获得结果时添加第三个元素。我初始化如下:

代码语言:javascript
复制
Dim riskDict As New Scripting.Dictionary
riskDict.Add "Weight", Array("WP", 0)

对于我的循环:

代码语言:javascript
复制
For Each key In riskDict
  temp = riskDict(key)
  ReDim Preserve temp(UBound(temp) + 1)
  temp(UBound(temp)) = getTheRisk(myDate.Value, myPort.Value, riskDict(key)(0))
  riskDict(key) = temp
Next key

这是不太理想的,因为redim保留。(而且它看起来并不是很优雅。)然而,这个字典只有8-10个条目,所以它不会对性能造成太大的影响。

如果您有任何更好的解决方案,请随时评论或张贴。

谢谢大家!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34514250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档