Как пройти коллекцию в классическом ASP? - PullRequest
15 голосов
/ 05 августа 2008

Я хочу иметь возможность:

For Each thing In things
End For

КЛАССИЧЕСКИЙ ASP - НЕ .NET!

Ответы [ 6 ]

13 голосов
/ 11 августа 2008

Как то так?

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
4 голосов
/ 05 августа 2008

Все, что вам [нужно], нужно написать за пределами VBScript.

В VB6 вы можете написать класс Custom Collection , затем вам нужно будет скомпилировать его в DLL-библиотеку ActiveX и зарегистрировать его на своем веб-сервере для доступа к нему.

2 голосов
/ 16 сентября 2008

Самое близкое, что вы получите, - это использование словаря (как упомянул Пацифика)

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
1 голос
/ 23 ноября 2008

Один из подходов, которые я использовал ранее, - это использование свойства коллекции, которая возвращает массив, который можно повторять.

Class MyCollection
    Public Property Get Items
        Items = ReturnItemsAsAnArray()
    End Property
    ...
End Class

Повторять как:

Set things = New MyCollection
For Each thing in things.Items
    ...
Next
0 голосов
/ 21 мая 2014

Будьте ОЧЕНЬ осторожны при использовании объекта VB Script Dictionary!
Просто найдите эту вещь " автовивификации ", встроенную в этот объект: http://en.wikipedia.org/wiki/Autovivification

Таким образом, когда вам нужно сравнить значения, НИКОГДА не используйте сравнение типа boolen, например:
If objDic.Item("varName") <> "" Then ...
Это автоматически добавит ключ "varName" в словарь (если он не существует, с пустым значением), чтобы продолжить вычисление логического выражения.

При необходимости используйте взамен If objDic.Exists("varName").

Просто проведите несколько дней, стуча в стены, с помощью этой функции Mcrosoft " * " ...
VBScript-словарь объектно-создание-а-ключа, который, никогда не существовали, но по настоящее время-в-другом-объекте

0 голосов
/ 23 сентября 2008

Как сказал Бретт, для создания коллекций лучше использовать компонент vb. Объекты словаря не очень часто используются в ASP, за исключением случаев, когда это необходимо для конкретных приложений.

...