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

【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 オブジェクトを返します。

関連コンテンツ