【Ruby】便利なdigメソッドとは?

digメソッド

ネストした(入子状態)ハッシュから

・安全に値を取り出したい

・値があるか、nilかどうかを確認したい

といったシーンで使える便利なメソッドです。

参考例

member1 = {
    name: {
        number: {
            position: 'Center Fielder'
        }
    }
}

上記のようなハッシュから、positionの値を取り出したい場合、digを使わなければ以下のようになります。

member1[:name][:number][:position]
=> "Center Fielder"

member2 = {
    name: {
    }
}

しかし、上記のようにnumberもpositionも入っていないデータがある場合に、先ほどと同じ方法で確かめると、以下のようなエラーが起こります。

member2[:name][:number][:position]
NoMethodError: undefined method `[]' for nil:NilClass
member2[:name][:number]
=> nil

理由としてはnumberはnilになっているので、positionは呼び出せません。

ただし、ここでdigを使うと、情報が入っていなくてもnilが返ってきます。

digを使う場合は、以下のように()を使って記述します。

member1.dig(:name, :number, :position)
=> "Center Fielder"

member2.dig(:name, :number, :position)
=> nil

このように、値がnilか確認したい場合は、便利なdegメソッドを使いましょう。

タイトルとURLをコピーしました