【Ruby3.x】ObjectSpace::WeakMap::each_key()メソッドの使い方
each_keyメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
each_keyメソッドは、RubyのObjectSpace::WeakMapクラスに格納されているすべてのキーに対して、指定された処理を実行するメソッドです。ObjectSpace::WeakMapは、キーへの「弱い参照」を持つ特殊なマップであり、キーが他の場所から参照されなくなった場合、そのキーと関連する値のペアが自動的にマップから削除され、メモリが解放される特性を持っています。
このeach_keyメソッドは、ObjectSpace::WeakMapが現在保持している有効なキーを一つずつ取り出し、与えられたブロック(コードのまとまり)に渡して実行します。たとえば、マップ内のすべてのキーを一覧表示したり、各キーに対して特定の検証や更新処理を行いたい場合に利用できます。ブロックが指定されなかった場合は、キーを順次処理するためのEnumeratorオブジェクトを返します。
each_keyを使用することで、WeakMapの動的な特性に対応しながら、現在マップに存在するキーのみを効率的に処理できます。これにより、不要になったキーが自動的に削除されるWeakMapの性質を考慮しつつ、常に最新の状態のキーに対して反復操作を行うことが可能となり、メモリ管理の負担を軽減しながらプログラムを簡潔に記述するのに役立ちます。
構文(syntax)
1require 'objspace' 2 3weak_map = ObjectSpace::WeakMap.new 4weak_map[:key1] = "value1" 5weak_map[:key2] = "value2" 6 7weak_map.each_key { |key| }
引数(parameters)
引数なし
引数はありません
戻り値(return)
self Enumerator
self が返されます。これにより、メソッドチェーンが可能になります。 また、イテレータブロックが指定されなかった場合は、Enumerator オブジェクトが返されます。