Como percorro uma coleção no ASP clássico?
-
08-06-2019 - |
Pergunta
Eu quero ser capaz de fazer:
For Each thing In things
End For
ASP CLÁSSICO - NÃO .NET!
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