Я хочу иметь возможность:
For Each thing In things
End For
КЛАССИЧЕСКИЙ ASP - НЕ .NET!
Я хочу иметь возможность:
For Each thing In things
End For
КЛАССИЧЕСКИЙ ASP - НЕ .NET!
Какими бы ни были ваши [вещи], они должны быть написаны вне VBScript.
В VB6 вы можете написать класс Custom Collection, затем вам нужно будет скомпилировать в 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
Как сказал Бретт, для создания коллекций лучше использовать компонент vb. Объекты-словари не очень часто используются в ASP, за исключением приложений, основанных на конкретных потребностях.
Будьте ОЧЕНЬ осторожны при использовании объекта VB Script Dictionary!
Просто откройте для себя эту штуку "autovivication", встроенную в этот объект: http://en.wikipedia.org/wiki/Autovivification
Таким образом, когда вам нужно сравнить значения, НИКОГДА не используйте логическое сравнение, например:If objDic.Item("varName") <> "" Then
...
Это автоматически добавит ключ "varName
" в словарь (если это не так). t существует с пустым значением), чтобы продолжить вычисление логического выражения.
При необходимости используйте вместо него If objDic.Exists("varName")
.
Просто проведите несколько дней, разбивая стены с помощью этой "функции" от Microsoft...
vbscript-dictionary- объект-создание-ключа-который-никогда-существовал-но-присутствовал-в-другом-объекте