カスタムDictionaryクラスを作ろう(4)

カスタムDictionaryクラスを作ろう(4)

akashi-keirin.hatenablog.com

前回の続きです。

過去記事

Exists()メソッドの実装

仕様を調べる

例によってオブジェクト ブラウザーで仕様を調べます。

Function Exists(Key) As Boolean

となっているので、引数がKeyで、Boolean型の値を返すFunction、ということですね。

指定したキーがディクショナリに含まれているかどうかを示します。

とのこと。

実は、このExists()メソッドがDictionaryオブジェクトの優秀さの根拠です。こいつの存在のおかげで、Dictionaryが異様に使いどころの多いオブジェクトになっているのです。

それはさておき、さっさと実装してしまいましょう。

実装

リスト1
Public Function Exists(ByVal Key As Variant) As Boolean
    Exists = m_Dictionary.Exists(Key)
End Function

以上。

めちゃくちゃ簡単ですね。

ちなみに、Scripting.Dictionaryオブジェクトのキーは何でもいいらしいので、引数のKeyVariant型を指定しています。

何なら〝ディクショナリをキーにしたディクショナリ〟みたいなこともできてしまいます〔参考〕。何がうれしいのかわかりませんが。

では、次。

Countプロパティの実装

仕様を調べる。

Property Count As Long

とあるので、Long型の値を返すプロパティ、ということです。

読み取り専用

とありますので、Property Getだけ実装すれば良い、ということです。

実装

リスト2
Public Property Get Count() As Long
    Count = m_Dictionary.Count
End Property

はい。これだけです。

楽勝ですね。

動作確認

今回は実装が簡単すぎて記事の中身がスッカスカなので、動作確認もしておくことにしましょう。

Exists()メソッド

リスト3-1
Private Sub DictionaryTest01()
    Dim dic As Dictionary
    Set dic = New Dictionary
    Call dic.Add(Key:="pachinko", Item:=123)
    Debug.Print dic.Exists("pachinko")
    Debug.Print dic.Exists("slot")
End Sub

たとえば、これを実行すると、"pachinko"というキーの要素は存在するのでTrue"slot"というキーの要素は存在しないのでFalseが返るはずです。

このとおり。

Countプロパティ

リスト3-2
Private Sub DictionaryTest01()
    Dim dic As Dictionary
    Set dic = New Dictionary
    Call dic.Add(Key:="pachinko", Item:=123)
    Call dic.Add(Key:="slot", Item:=123)
    Call dic.Add(Key:="nobuta", Item:="group")
    Call dic.Add(Key:="Go", Item:="Go Go!!")
    Debug.Print dic.Count
End Sub

たとえば、これを実行すると、全部で4つの要素が追加されているので、4が返るはずです。

このとおり。

おわりに

次回は、いよいよItemプロパティの実装です。

akashi-keirin.hatenablog.com