有没有一种非破坏性的方式从哈希表中删除键值对?
例如,如果您执行了以下操作:
例如,如果您执行了以下操作:
original_hash = {:foo => :bar}
new_hash = original_hash
new_hash = new_hash.reject{|key, _| key == :foo}
或者
original_hash = {:foo => :bar}
new_hash = original_hash
new_hash = new_hash.dup
new_hash.delete(:foo)
如果你执行了这个操作,那么original_hash
不会发生变化,而new_hash
会改变,但它们可能有些啰嗦。如果你愿意,可以这样做。
original_hash = {:foo => :bar}
new_hash = original_hash
new_hash.delete(:foo)
那么original_hash
被更改了,这不是我想要的。
有没有一个单一的方法能够做到我想要的呢?
delete_if
会更改original_hash
。此外,在你的第二个示例中使用delete
的new_hash
会获取与:foo
关联的值,即:bar
,而不是哈希本身。 - Chris Salzberg