2017-09-15 7 views

答えて

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 
関連する問題