ハッシュからエントリを削除する
Hash#deleteメソッドによりキーに対応するエントリを削除することができます。Hash#deleteメソッドはレシーバ自身を更新します。
code:ruby
h = {"apple"=>150, "banana"=>300, "lemon"=>500}
h.delete('banana') #=> 300 p h #=> {"apple"=>150, "lemon"=>500} Hash#deleteメソッドにブロックを渡すと、指定されたキーが存在しなかった場合に評価されます。
code:ruby
h = {"apple"=>150, "banana"=>300}
h.delete('lemon') {|key| puts "#{key} not exist!"} #=> "lemon not exist!" Hash#delete_ifメソッド、Hash#reject!メソッドはキーと値を引数としてブロックを評価し、値が真である時に要素を削除します。それぞれレシーバ自身を更新します。
code:ruby
h = {"apple"=>150, "banana"=>300, "lemon"=>400}
h.delete_if {|key, value| value < 200} #=> {"banana"=>300, "lemon"=>400} p h #=> {"banana"=>300, "lemon"=>400} h.reject! {|key, value| key == "banana"} #=> {"lemon"=>400}