🙆♀️
[Feature #20815] ネストした Hash の値を取得する Hash#fetch_nested を追加する提案
[Feature #20815] Fetch for nested hash
- ネストした
Hash
の値を取得するHash#fetch_nested
を追加する提案 -
Hash#dig
とは違ってキーが見つからない場合は例外が発生することを期待する
data = { user: { profile: { name: "Alice" } } }
# #fetch を使用した場合
data.fetch(:user).fetch(:profile).fetch(:name)
# => "Alice"
# #fetch_nested を使用した場合
data.fetch_nested(:user, :profile, :name)
# => "Alice"
- 例外が発生する
#dig
がほしい!っていう話はたまにみかけますねー - 他のチケットと重複している、という理由でこのチケット自体は閉じられています
- ちなみにパターンマッチを利用すると以下のようにかけることがコメントされてますねー
data = { user: { profile: { name: "Alice" } } }
data => user: { profile: { name: } }
p name #=> "Alice"
# error: {:user=>{:profile=>{:name=>"Alice"}}}: key not found: :age (NoMatchingPatternKeyError)
data => user: { profile: { age: } }
- もうパターンマッチでいいんじゃないかな…
Discussion