题
我希望能够做到:
For Each thing In things
End For
经典 ASP - 不是 .NET!
解决方案
无论您的[事物]是什么,都需要在 VBScript 之外编写。
在VB6中, 你可以编写一个自定义集合类, ,那么您需要编译为 ActiveX DLL 并将其注册到您的网络服务器上才能访问它。
其他提示
像这样的东西吗?
dim cars(2),x
cars(0)="Volvo"
cars(1)="Saab"
cars(2)="BMW"
For Each x in cars
response.write(x & "<br />")
Next
如果你想关联键和值 使用字典对象 反而:
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
您将得到的最接近的是使用字典(如 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
我之前使用过的一种方法是使用返回数组的集合的属性,该数组可以迭代。
Class MyCollection
Public Property Get Items
Items = ReturnItemsAsAnArray()
End Property
...
End Class
迭代如下:
Set things = New MyCollection
For Each thing in things.Items
...
Next
正如 Brett 所说,最好使用 vb 组件来创建集合。字典对象在 ASP 中并不常用,除非基于特定需求的应用程序。
使用 VB 脚本字典对象时要非常小心!
只要发现这个“自动存活“ 东西,这个对象上原生的: http://en.wikipedia.org/wiki/Autovivification
因此,当您需要比较值时,切勿使用布尔比较,例如:
If objDic.Item("varName") <> "" Then
...
这会 自动地 添加密钥“varName
" 到字典(如果不存在,则为空值),以便继续评估布尔表达式。
如果需要,请改用 If objDic.Exists("varName")
.
只需花几天时间敲墙,用这个Mcrosoft“特征"...
vbscript字典对象创建一个从未存在但存在于另一个对象中的密钥
不隶属于 StackOverflow