階層になっているHashに対して、浅い順にキーを辿ってvalueを得る
Bài đăng này đã không được cập nhật trong 9 năm
自分用にメモ。車輪の再発明感が非常に強いんですが・・・
h = {a: {b: {c: :d}}}
の時、
h.recursive_fetch [:a, :b, :c]
=> :d
ってなるメソッドをHashに追加しました。途中にKeyが無くてもExceptionが出ずに、
h.recursive_fetch [:a, :e, :c]
=> nil
ってなるようにしてます。
class Hash
def recursive_fetch(keys = [], default = nil)
keys.inject(self){|value, key|value.try(:[], key)} || default
end
end
Railsだったら lib 下あたりに置いて、application.rb とか initializers 下あたりから呼ぶようにして使っています。
All rights reserved