【Ruby3.x】ObjectSpace::WeakMap::key?()メソッドの使い方
key?メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
key?メソッドは、指定されたオブジェクトがObjectSpace::WeakMapのキーとして存在するかどうかを確認するメソッドです。
ObjectSpace::WeakMapは、キーへの参照を「弱い参照」として保持する特殊なマップ(ハッシュのようなデータ構造)です。通常のハッシュとは異なり、キーとなるオブジェクトが他のどこからも参照されなくなった場合、RubyのガベージコレクタによってWeakMapからも自動的に削除されます。この特性は、メモリリークを防ぎながらオブジェクトの状態を追跡したり、一時的なキャッシュを実装したりする際に非常に有用です。
このkey?(obj)メソッドに任意のオブジェクトobjを渡すと、そのobjが現在のWeakMapのキーとして登録されており、かつガベージコレクションによってまだ削除されていない場合にtrueを返します。もしobjがキーとして登録されていない場合や、過去にキーとして登録されていたものの既にガベージコレクションによって削除されてしまった場合はfalseを返します。このメソッドは、特定のオブジェクトがWeakMapによって「生きている」キーとして追跡されているかを確認したい場合に役立ちます。ただし、キーが弱い参照であるため、key?メソッドがtrueを返した直後であっても、ガベージコレクションのタイミングによってはすぐにそのキーがWeakMapから削除される可能性があることに留意してください。
構文(syntax)
1require 'objspace' 2 3weak_map = ObjectSpace::WeakMap.new 4weak_map["key1"] = "value1" 5weak_map.key?("key1")
引数(parameters)
key
- key: 調べたいキーオブジェクト
戻り値(return)
Boolean
指定されたキーがWeakMapに存在するかどうかを真偽値(trueまたはfalse)で返します。