【Ruby3.x】Struct::deconstruct_keys()メソッドの使い方
deconstruct_keysメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
deconstruct_keysメソッドは、Structオブジェクトをキーと値のペアからなるハッシュ形式に「分解」する処理を実行するメソッドです。Structは、複数の関連する値をひとつのまとまりとして扱うための便利なクラスです。このメソッドは、Structオブジェクトが持つ各メンバー(フィールド)の名前をキーとして、そのメンバーが保持する値をバリューとするハッシュを生成し、返します。
主な用途として、Ruby 3.0以降で導入されたパターンマッチング機能において、Structオブジェクトをハッシュパターンでマッチングさせる際に、Rubyインタープリタによって内部的に呼び出されます。これにより、Structオブジェクトの内部構造を直接意識することなく、その中に含まれる特定のデータ要素を柔軟かつ効率的に取り出すことが可能になります。
例えば、「x」と「y」というメンバーを持つStructインスタンスがある場合、deconstruct_keysメソッドは{"x" => xの値, "y" => yの値}のようなハッシュを返します。この仕組みにより、コードの可読性が向上し、様々なデータ形式に対して統一的なアプローチで処理を記述できる利点があります。
構文(syntax)
1Person = Struct.new(:name, :age) 2person = Person.new("Alice", 30) 3 4case person 5in name: n, age: a 6 puts "名前: #{n}, 年齢: #{a}" 7end
引数(parameters)
keys = nil
- keys = nil: 抽出したいキーの配列またはシンボル、またはnilを指定します。nilを指定した場合、Structの全フィールドが抽出されます。
戻り値(return)
Hashまたはnil
Structクラスのdeconstruct_keysメソッドは、Structのインスタンスを、指定されたキーに対応する値を持つHashとして分解できない場合にnilを返します。それ以外の場合は、分解されたキーと値のペアを含むHashを返します。