Pergunta

Eu quero ser capaz de fazer:

For Each thing In things
End For

ASP CLÁSSICO - NÃO .NET!

Foi útil?

Solução

Quaisquer que sejam suas [coisas], precisam ser escritas fora do VBScript.

Em VB6, você pode escrever uma classe de coleção personalizada, então você precisará compilar em uma DLL ActiveX e registrá-la em seu servidor web para acessá-la.

Outras dicas

Algo assim?

dim cars(2),x
cars(0)="Volvo"
cars(1)="Saab"
cars(2)="BMW"

For Each x in cars
  response.write(x & "<br />")
Next

Ver www.w3schools.com.

Se você deseja associar chaves e valores use um objeto de dicionário em vez de:

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

O mais próximo que você chegará é usar um Dicionário (conforme mencionado por Pacifika)

Dim objDictionary
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.CompareMode = vbTextCompare 'makes the keys case insensitive'
objDictionary.Add "Name", "Scott"
objDictionary.Add "Age", "20"

Mas eu percorro meus dicionários como uma coleção

For Each Entry In objDictionary
  Response.write objDictionary(Entry) & "<br />"
Next

Você pode percorrer todo o dicionário desta forma, escrevendo os valores que ficariam assim:

Scott
20

Você também pode fazer isso

For Each Entry In objDictionary
  Response.write Entry & ": " & objDictionary(Entry) & "<br />"
Next

O que produziria

 Name: Scott
 Age: 20

Uma abordagem que usei antes é usar uma propriedade da coleção que retorna um array, que pode ser iterado.

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

Iterar como:

Set things = New MyCollection
For Each thing in things.Items
    ...
Next

Como disse Brett, é melhor usar um componente vb para criar coleções.Objetos de dicionário não são comumente usados ​​em ASP, a menos que sejam para aplicativos baseados em necessidades específicas.

Tenha MUITO cuidado ao usar o objeto VB Script Dictionary!
Basta descobrir isso "autovivificação"coisa, nativa neste objeto: http://en.wikipedia.org/wiki/Autovivification

Então, quando você precisar comparar valores, NUNCA use uma comparação boolena como:
If objDic.Item("varName") <> "" Then...
Isso vai automaticamente adicione a chave "varName" ao dicionário (se não existir, com valor vazio), para continuar avaliando a expressão booleana.

Se necessário, use em vez disso If objDic.Exists("varName").

Basta passar alguns dias batendo paredes, com esse Mcrosoft"recurso"...
vbscript-dicionário-objeto-criando-uma-chave-que-nunca-existiu-mas-presente-em-outro-objeto

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top