Ruby 中“删除”的不可变替代方案

Immutable alternative to `delete` in Ruby

有没有Hash#delete版本如下:

hash = {a: 1}
hash.delete(:a) # => 1
hash # => {}

那个 returns 没有 :a 的散列,没有改变原始散列以使其具有原始值?

使用Hash#reject.

hash.reject { |k,_| k == :a }
  #=> {}
hash
  #=> {:a=>1}

这当然不依赖于具有单个键值对的散列。