【Ruby3.x】ObjectSpace::WeakKeyMap::[]=()メソッドの使い方
[]=メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
[]=メソッドは、ObjectSpace::WeakKeyMapオブジェクトにキーと値のペアを関連付けて格納するメソッドです。ObjectSpace::WeakKeyMapは、キーを「弱参照」で保持する特別なマップです。弱参照とは、そのオブジェクトが他のどこからも強参照されていない場合に、Rubyのガベージコレクション(GC)によってメモリから自動的に解放(回収)されることを許容する参照のことです。このマップは、キーとして使われたオブジェクトがGCによって回収されると、それに対応するエントリ(キーと値のペア)もマップから自動的に削除されるという特性を持っています。
この[]=メソッドは、map[キー] = 値 という形式で使用し、指定されたキーと値のペアをマップに追加したり、既存のキーに対応する値を更新したりします。ここで設定されたキーは弱参照としてマップに保持され、値は通常の強参照として保持されます。そのため、もしキーとなるオブジェクトへの強参照が他になくなると、そのオブジェクトはGCの対象となり、回収されます。キーが回収されると、このWeakKeyMap内からも該当するエントリが自動的に削除され、メモリの無駄な消費を防ぎます。これは、キャッシュのように一時的なマッピングを管理する際に、不要になったエントリの手動削除の手間を省き、メモリ効率を高めるのに役立ちます。メソッドの引数にはキーとなるオブジェクトと値となるオブジェクトを指定し、戻り値は代入された値そのものです。
構文(syntax)
1weak_key_map[key] = value
引数(parameters)
key, value
- key: マップに追加するキー。このキーはWeakReferenceでラップされます。
- value: 指定されたキーに関連付ける値。
戻り値(return)
Object
指定されたキーに対応する値を設定または更新した結果、設定された値が返されます。