辞書をメンバー変数の1つとして持つvbscriptでクラスを作成しようとしていて、Addメソッドの単純なラッパークラスを作成しようとしています。それは本当にひどくひどくなります。私は動作していないすべての行をコメントアウトしました。vbscriptでクラス内の辞書を使用するにはどうすればよいですか?
0
A
答えて
4
メンバー変数を公開することでその変数を公開することはお勧めできません。辞書を公開するには、クラスのプロパティとメソッドでアクセス可能にするプロパティとメソッドを適切にラップします。
Class Foo
Private d_
Private Sub Class_Initialize
Set d_ = CreateObject("Scripting.Dictionary")
End Sub
Public Property Let Item(name, value)
d_(name) = value
End Property
Public Property Get Item(name)
Item = d_(name)
End Property
Public Function Exists(name)
Exists = d_.Exists(name)
End Function
Public Sub Remove(name)
d_.Remove(name)
End Sub
End Class
Set obj = New Foo
WScript.Echo "" & obj.Exists("bar")
obj.Item("bar") = 42
WScript.Echo "" & obj.Exists("bar")
WScript.Echo obj.Item("bar")
obj.Remove("bar")
WScript.Echo "" & obj.Exists("bar")
0
はコメント行ずつ通って行く:
Values = CreateObject("Scripting.Dictionary")
、追加、変更、およびキー/値のペアを削除するだけでなく、キーの存在を確認可能
例
変数にオブジェクト参照を割り当てるときは、Set
ステートメントを使用する必要があります。
Values().Add Name, Value
あなたは、あなたがそれにアクセスすることができます前に、Values
ためProperty Get
を定義する必要があります。それ以外の場合は、書き込み専用のプロパティです。
Private Property Let Values(Value)
Set m_Values = Value
End Property
このプロパティはオブジェクト参照が含まれているので、あなたはキーワードProperty Set
を使用する必要があります。
すべて一緒にそれを置く:
Class ConfigSection
Private m_Name
' A dictionary of values to set {Section:{name:value, name2:value2}}
Private m_Values
Private m_Overwrite
Public Function init(p_Name, p_Overwrite)
Set init = Me
m_Name = p_name
m_Overwrite = p_Overwrite
Set Values = CreateObject("Scripting.Dictionary")
End Function
Public Property Get Name
Name = m_Name
End Property
Public Property Get Overwrite
Overwrite = m_Overwrite
End Property
Public Sub Add(Name, Value)
Values().Add Name, Value
End Sub
Private Property Get Values
Set Values = m_Values
End Property
Private Property Set Values(Value)
Set m_Values = Value
End Property
End Class
関連する問題
- 1. Python辞書キーの値をクラス内に追加するにはどうすればよいですか?
- 2. 別の辞書リストに辞書のリストを追加するにはどうすればよいですか?
- 3. 辞書のリストから辞書を削除するにはどうすればよいですか?
- 4. C#で非常に大きな辞書を使用するにはどうすればよいですか?
- 5. ネストされた辞書の名前を使用するにはどうすればよいですか?
- 6. .Whereを使用して辞書の値にアクセスするにはどうすればよいですか?
- 7. 辞書でFunction as valueを使用するにはどうすればよいですか? (C#)
- 8. ZLIB.NETで辞書を使用するにはどうすればよいですか?
- 9. ネストされた辞書内のテーブルのエントリを更新するにはどうすればよいですか?
- 10. javaで書かれたセレンウェブドライバプログラム内でfirefoxプラグインを使用するにはどうすればよいですか?
- 11. C#辞書とリストをユーザー入力と共に使用するにはどうすればよいですか?
- 12. ダイナミックキーを使用して辞書に追加するにはどうすればよいですか?
- 13. LINQを使用して辞書を「剪定」するにはどうすればよいですか?
- 14. 汎用クラス内でEnumの静的関数を使用するにはどうすればよいですか?
- 15. プライベート親クラスを内部クラスの親として使用するにはどうすればよいですか?
- 16. Djangoテンプレート内のハイフンを含む辞書キーにアクセスするにはどうすればよいですか?
- 17. 辞書内のデータポイントに対してハニングスムージングを作成するにはどうすればよいですか?
- 18. VBScriptでマウスクリックをシミュレートするにはどうすればよいですか?
- 19. ディクショナリ内のリスト内の辞書内に辞書がある場合、その中の情報にどのようにアクセスすればよいですか?
- 20. ペア辞書を別の辞書に追加するにはどうすればいいですか?
- 21. パイソン、どのように内部辞書内のキーで辞書内の辞書をソートする
- 22. Symfonyでは、クラス内でurl_forヘルパーを使用するにはどうすればよいですか?
- 23. 辞書をグリッドビューにバインドするにはどうすればいいですか?
- 24. リスト内の辞書全体を削除するにはどうすればよいですか?
- 25. デフォルトの辞書の代わりにaspellで独自の辞書を使用するにはどうすればよいですか?
- 26. 辞書のデフォルト辞書を作成するにはどうすればいいですか
- 27. LINQクエリの内部でこのクラス拡張を使用するにはどうすればよいですか?
- 28. ジェネリック型のクラス内のRealmオブジェクトでカスタムイニシャライザを使用するにはどうすればよいですか?
- 29. Flexアプリケーション内で使用するクラスをインポートするにはどうすればよいですか?
- 30. 辞書をデータグリッドに含めるにはどうすればいいですか?