私はできるようにしたい:
For Each thing In things
End For
従来の ASP - .NET ではありません!
このようなもの?
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
[物事] が何であれ、VBScript の外で記述する必要があります。
VB6 では、カスタム コレクション クラスを記述できます。次に、ActiveX DLL にコンパイルし、Web サーバーに登録してアクセスする必要があります。
あなたが得ようとしている最も近いのは、辞書を使用することです(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
私が以前に使用した 1 つのアプローチは、配列を返すコレクションのプロパティを使用することです。これは反復処理が可能です。
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 スクリプト ディクショナリ オブジェクトの使用には十分注意してください。このオブジェクトにネイティブな、この「自動生存
化」のことを
発見してください: http://en.wikipedia.org/wiki/Autovivification
したがって、値を比較する必要がある場合は、次のようなブール比較を使用しないでください:
If objDic.Item("varName") <> "" Then
...
これにより、キー " " が辞書に自動的に追加されますvarName
(存在しない場合は空の値で) 、評価を続行します。ブール式。
必要に応じて、代わりに を使用してIf objDic.Exists("varName")
ください。
このマイクロソフトの「機能」を使って、壁をノックするだけで数日を過ごすことができます
...