【Ruby3.x】Struct::dig()メソッドの使い方
digメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
digメソッドは、Structオブジェクトが持つネストした構造の中から、指定されたキーのパスをたどって値を取得するメソッドです。
Structクラスは、複数の属性をまとめて扱うための簡易的なクラスを生成する際に便利です。例えば、ユーザー情報や設定データなど、複数の関連するデータを一つのオブジェクトとして管理したい場合に使用します。
このdigメソッドは、引数として一つ以上のキー(またはインデックス)を受け取ります。受け取ったキーを順番にStructオブジェクトのメンバーや、さらにそのメンバーが持つハッシュや配列などの内部構造を深く探索していきます。例えば、Structのメンバーがハッシュであり、そのハッシュの中にさらに別のハッシュや配列があるような場合に有効です。
探索の過程で、指定されたキーに対応する値が見つからなかった場合や、探索対象がnilであった場合でも、エラーを発生させることなく安全にnilを返します。これにより、従来のメソッドチェーンで起こりうるNoMethodErrorなどを回避し、存在しない可能性のあるデータにアクセスする際のエラーハンドリングを簡素化できます。
したがって、Structオブジェクトが複雑な内部構造を持つ場合に、特定のデータ項目へ安全かつ簡潔にアクセスしたいときに非常に役立つメソッドです。
構文(syntax)
1User = Struct.new(:id, :profile) 2user_data = User.new(101, { name: "Alice", details: { age: 30, city: "Tokyo" } }) 3user_data.dig(:profile, :details, :age)
引数(parameters)
key, *args
- key: 探索を開始するキー。
- *args: 探索を続けるための追加のキーの可変長引数。
戻り値(return)
任意の値またはnil
Struct#dig は、指定したキーまたはインデックスに対応する値、またはネストした構造の奥深くにある値を返します。指定したキーまたはインデックスが存在しない場合は nil を返します。