【发布时间】:2012-11-09 06:05:21
【问题描述】:
是否有从哈希中删除键值对的非破坏性方法?
例如,如果你这样做了
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 被更改,这不是我想要的。
有没有一种方法可以满足我的要求?
【问题讨论】:
-
original_hashis 在您的第一个示例中使用delete_if进行了更改。此外,new_hash在第二个示例中使用delete获取与:foo关联的值,即:bar,而不是哈希本身。 -
@shioyama 谢谢你! >_
标签: ruby hash side-effects