Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【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)で返します。

関連コンテンツ