我希望能够做到:
For Each thing In things
End For
CLASSIC ASP - 不是.NET!
答案 0 :(得分:13)
这样的东西?
dim cars(2),x
cars(0)="Volvo"
cars(1)="Saab"
cars(2)="BMW"
For Each x in cars
response.write(x & "<br />")
Next
如果您想要将键和值use a dictionary object关联起来:
Dim objDictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.Add "Name", "Scott"
objDictionary.Add "Age", "20"
if objDictionary.Exists("Name") then
' Do something
else
' Do something else
end if
答案 1 :(得分:4)
无论你的[事物]是什么都需要在VBScript之外编写。
在VB6中,you can write a Custom Collection class,然后你需要编译成一个ActiveX DLL并在你的网络服务器上注册它来访问它。
答案 2 :(得分:2)
你最接近的是使用字典(如Pacifika所述)
Dim objDictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.CompareMode = vbTextCompare 'makes the keys case insensitive'
objDictionary.Add "Name", "Scott"
objDictionary.Add "Age", "20"
但我像集合一样遍历我的词典
For Each Entry In objDictionary
Response.write objDictionary(Entry) & "<br />"
Next
你可以通过这样的方式遍历整个字典,写出如下所示的值:
Scott
20
你也可以这样做
For Each Entry In objDictionary
Response.write Entry & ": " & objDictionary(Entry) & "<br />"
Next
哪会产生
Name: Scott
Age: 20
答案 3 :(得分:1)
我之前使用的一种方法是使用返回数组的集合的属性,可以迭代它。
Class MyCollection
Public Property Get Items
Items = ReturnItemsAsAnArray()
End Property
...
End Class
迭代:
Set things = New MyCollection
For Each thing in things.Items
...
Next
答案 4 :(得分:0)
正如Brett所说,最好使用vb组件来创建集合。除非基于特定需求的应用程序,否则字典对象在ASP中不常用。
答案 5 :(得分:0)
非常小心使用VB脚本字典对象!
只需在此对象上发现此“ autovivication ”这一事物:http://en.wikipedia.org/wiki/Autovivification
所以,当你需要比较数值时,千万不要使用如下的boolen比较:
If objDic.Item("varName") <> "" Then
...
这将自动将键“varName
”添加到字典中(如果它不存在,带有空值),以便继续评估布尔表达式。
如果需要,请改用If objDic.Exists("varName")
。
用这个Mcrosoft“功能”只需要花几天时间敲墙壁 vbscript-dictionary-object-creating-a-key-which-never-existed-but-present-in-another-object