Я хочу быть в состоянии сделать:
For Each thing In things
End For
КЛАССИЧЕСКИЙ ASP - НЕ .NET!
Независимо от того, что ваши [вещи] должны быть написаны за пределами VBScript.
В VB6 вы можете написать класс Custom Collection , затем вам нужно будет скомпилировать его в DLL-библиотеку ActiveX и зарегистрировать его на своем веб-сервере, чтобы получить к нему доступ.
Что-то вроде этого?
dim cars(2),x
cars(0)="Volvo"
cars(1)="Saab"
cars(2)="BMW"
For Each x in cars
response.write(x & "<br />")
Next
Смотрите www.w3schools.com .
Если вы хотите связать ключи и значения, используйте вместо этого объект словаря :
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
Самое близкое, что вы собираетесь получить, это использовать словарь (как упомянуто Пацификой)
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
Как сказал Бретт, для создания коллекций лучше использовать компонент vb. Объекты словаря не очень часто используются в ASP, за исключением случаев, когда это необходимо для конкретных приложений.
Один из подходов, который я использовал ранее, - это использование свойства коллекции, которая возвращает массив, который можно перебирать.
Class MyCollection
Public Property Get Items
Items = ReturnItemsAsAnArray()
End Property
...
End Class
Повторять как:
Set things = New MyCollection
For Each thing in things.Items
...
Next
Будьте ОЧЕНЬ осторожны при использовании VB Script Dictionary Object!
Просто откройте для себя эту вещь " самовосстановления ", свойственную этому объекту: http://en.wikipedia.org/wiki/Autovivification
Поэтому, когда вам нужно сравнить значения, НИКОГДА не используйте сравнение с булевыми значениями, например:
If objDic.Item("varName") <> "" Then
...
Это автоматически добавит ключ " varName
" в словарь (если он не существует, с пустым значением), чтобы продолжить оценку логическое выражение.
Если необходимо, используйте вместо этого If objDic.Exists("varName")
.
Просто потратьте несколько дней, стуча в стены, с помощью этой « функции » Mcrosoft ...
vbscript-словарь-объект-создание-ключ-которого-никогда не существовало-но-присутствует-в-другом-объекте