Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Hashクラス > fetch
fetch(key, default = nil) {|key| ... } -> object
[permalink][rdoc]key に関連づけられた値を返します。該当するキーが登録されてい ない時には、引数 default が与えられていればその値を、ブロッ クが与えられていればそのブロックを評価した値を返します。
fetchはハッシュ自身にデフォルト値が設定されていても単に無視します(挙動に変化がありません)。
h = {one: nil} p h[:one],h[:two] #=> nil,nil これではキーが存在するのか判別できない。 p h.fetch(:one) #=> nil p h.fetch(:two) # エラー key not found (KeyError) p h.fetch(:two,"error") #=> "error" p h.fetch(:two){|key|"#{key} not exist"} #=> "two not exist" p h.fetch(:two, "error"){|key| #=> "two not exist" "#{key} not exit" # warning: block supersedes default value argument } # 警告が表示される。 h.default = "default" p h.fetch(:two) # エラー key not found (KeyError)
[SEE_ALSO] Hash#[]