カスタムDictionaryクラスを作ろう(4)
前回の続きです。
過去記事
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オブジェクトのキーは何でもいいらしいので、引数のKeyはVariant型を指定しています。
何なら〝ディクショナリをキーにしたディクショナリ〟みたいなこともできてしまいます〔参考〕。何がうれしいのかわかりませんが。
では、次。
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プロパティの実装です。