Чтобы добавить новую пару к Hash, я делаю:
{:a => 1, :b => 2}.merge!({:c => 3}) #=> {:a => 1, :b => 2, :c => 3}
Есть ли аналогичный способ удаления ключа из Hash?
Это работает:
{:a => 1, :b => 2}.reject! { |k| k == :a } #=> {:b => 2}
но я ожидал бы что-то вроде:
{:a => 1, :b => 2}.delete!(:a) #=> {:b => 2}
Важно, что возвращаемое значение будет оставшимся хешем, поэтому я мог бы делать такие вещи, как:
foo(my_hash.reject! { |k| k == my_key })
в одной строке.