【Ruby3.x】ObjectSpace::WeakMap::each_value()メソッドの使い方
each_valueメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
each_valueメソッドは、ObjectSpace::WeakMapオブジェクトが現在保持している各値に対して繰り返し処理を実行するメソッドです。ObjectSpace::WeakMapは、キーへの参照がなくなると、ガベージコレクタによってキーとそれに対応する値が自動的に削除される特殊なマップです。このため、WeakMapはメモリ管理を意識した場面で活用されます。
このメソッドにブロックを渡すと、WeakMap内に残っている有効なすべての値が一つずつブロックに渡され、ブロック内の処理が実行されます。例えば、マップ内のすべての値に対して特定の操作を行いたい場合などに便利です。もしブロックを渡さなかった場合、each_valueメソッドはEnumeratorオブジェクトを返します。このEnumeratorを使うことで、WeakMap内の値を外部から順次取り出して利用することが可能です。
each_valueメソッドは、WeakMapがその時点で保持している有効な値のみを対象とします。すでにキーへの参照が失われ、ガベージコレクションによって削除されたペアの値は、繰り返し処理の対象には含まれません。このように、each_valueを使用することで、WeakMapの動的な性質を考慮しつつ、その内容を安全かつ効率的に操作できる点が特徴です。
構文(syntax)
1object_space_weakmap_instance.each_value { |value| 2 # ここで各値(value)に対する処理を記述します。 3 # 例: puts value 4}
引数(parameters)
引数なし
引数はありません
戻り値(return)
self Enumerator
ObjectSpace::WeakMap#each_value メソッドは、WeakMap 内の各値に対してブロックを評価し、self、つまり ObjectSpace::WeakMap インスタンス自身を返します。これにより、メソッドチェーンを可能にします。