VBSCRIPT数组键

4 arrays vbscript

我对vbscript相当新,我正在努力,因为我对Javascript更熟悉.有人可以帮我一把吗?

vbscript是否允许使用我在下面的示例中使用的命名数组键?

例如,我有:

Dim result(3)
result(age)       = 60
result(firstname) = "Tony"
result(height)    = 187
result(weight)    = 76

msgbox("Age: "    & result(age)       & vbCr &_
       "Name: "   & result(firstname) & vbCr &_
       "Height: " & result(height)    & vbCr &_
       "Weight: " & result(weight)    )
Run Code Online (Sandbox Code Playgroud)

生成的msgbox显示:

  Age: 76 
  Name: 76 
  Height: 76 
  Weight: 76 
Run Code Online (Sandbox Code Playgroud)

这似乎将结果数组中的每个元素分配给76,这应该只分配给"weight"元素.

这是否发生是因为vbscript只接受整数作为数组的键/索引?

任何帮助是极大的赞赏.

谢谢Turgs

Ant*_*nes 9

为了实现这一点,您需要使用Scripting库中的Dictionary对象: -

Dim result : Set result = CreateObject("Scripting.Dictionary")
result.Add "Age", 60
result.Add "Name", "Tony"
Run Code Online (Sandbox Code Playgroud)

等等.您可以检索项目: -

Dim age : age = result("Age")
Run Code Online (Sandbox Code Playgroud)

但是,如果您有固定的标识符集,则可以考虑定义类: -

Class CResult
    Public Age
    Public Name
End Class

Dim result : Set result = new CResult
result.Age = 60
result.Name = "Tony"

MsgBox "Age: "    & result.Age       & vbCrLf & _
   "Name: "   & result.Nname) & vbCrLf
Run Code Online (Sandbox Code Playgroud)

顺便说一下,我们通常使用CR LF作为新行而不仅仅是CR.此外,如果您使用方法或函数作为语句(如上面的MsgBox中所示),请不要在()中包含参数.


小智 6

除了安德鲁在这个页面上的解决方案之外,我还能够使用VBScript中的Dictionary对象来完成我使用的语法后更像是关联数组,也可以在其他语言中使用:

Dim result 
Set result = CreateObject("scripting.dictionary") 

result("age") = 60 
result("firstname") = "Tony" 
result("height") = 187 
result("weight") = 76 

msgbox("Age: "       & result("age")       & vbCr &_ 
      "First Name: " & result("firstname") & vbCr &_ 
      "Height: "     & result("height")    & vbCr &_ 
      "Weight: "     & result("weight")    ) 
Run Code Online (Sandbox Code Playgroud)

有关字典对象的更多信息,请访问:http: //www.microsoft.com/technet/scriptcenter/guide/sas_scr_ildk.mspx

我希望这对尝试做同样事情的其他人有所帮助.

感谢Richard Mueller通过microsoft.public.scripting.vbscript Usenet组提供此解决方案.

干杯

Turgs