Как мне просмотреть коллекцию в классическом ASP?

StackOverflow https://stackoverflow.com/questions/2300

  •  08-06-2019
  •  | 
  •  

Вопрос

Я хочу быть в состоянии делать:

For Each thing In things
End For

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

Это было полезно?

Решение

Какими бы ни были ваши [вещи], они должны быть написаны вне VBScript.

В VB6, вы можете написать пользовательский класс коллекции, затем вам нужно будет скомпилировать библиотеку 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

Самое близкое, что вы получите, - это использование словаря (как упомянуто 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!
Просто откройте для себя это " .самовосстановление" вещь, родная для этого объекта: http://en.wikipedia.org/wiki/Autovivification

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top