【Ruby3.x】ObjectSpace::WeakMap::each_pair()メソッドの使い方
each_pairメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
each_pairメソッドは、ObjectSpace::WeakMapオブジェクトに現在保持されているキーと値のペアを一つずつ取り出し、与えられたブロックを実行するメソッドです。ObjectSpace::WeakMapは、一般的なハッシュのようにキーと値を関連付けますが、キーへの参照が「弱い参照」である点が特徴です。弱い参照とは、そのキーオブジェクトが他のどこからも参照されなくなった場合に、Rubyのガベージコレクタによって自動的にメモリから解放され、同時にWeakMapからもそのキーと値のペアが削除されるという特性を持つ参照のことです。これにより、不要になったオブジェクトがメモリに残り続けることを防ぎ、メモリの効率的な管理を助けます。
each_pairメソッドは、このWeakMapからまだ削除されていない有効なキーと値のペアに対してのみ処理を実行します。ブロックには、その時点でのキーと値が引数として順番に渡されます。例えば、weak_map.each_pair { |key, value| puts "#{key} => #{value}" }のように使用し、WeakMapの各要素の内容を確認したり、特定の処理を適用したりできます。このメソッドは、WeakMapの現在の内容をすべて走査し、個々のペアに対する操作を行いたい場合に非常に有用です。もしブロックが与えられなかった場合、each_pairメソッドはEnumeratorオブジェクトを返し、遅延評価による柔軟なイテレーション処理を可能にします。
構文(syntax)
1weak_map.each_pair do |key, value| 2 # ... 3end
引数(parameters)
引数なし
引数はありません
戻り値(return)
self または Enumerator
ObjectSpace::WeakMap#each_pair メソッドは、マップ内の各キーと値のペアに対してブロックを実行し、その処理結果として self (WeakMap オブジェクト自身) または Enumerator オブジェクトを返します。