我对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
为了实现这一点,您需要使用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
| 归档时间: |
|
| 查看次数: |
12720 次 |
| 最近记录: |