获取删除一个元素的Ruby哈希(非破坏性)
我需要在现有哈希的基础上得到一个新的Ruby哈希,但要删除一个元素,并且不影响原始哈希。我相信这真的很简单,而且我是个红宝石新手,根本看不出来 例如,如果我有获取删除一个元素的Ruby哈希(非破坏性),ruby,Ruby,我需要在现有哈希的基础上得到一个新的Ruby哈希,但要删除一个元素,并且不影响原始哈希。我相信这真的很简单,而且我是个红宝石新手,根本看不出来 例如,如果我有plugh={:bar=>“bar”,:baz=>“baz”}我希望能够做一些类似xyzy=plugh的事情。一些神奇的东西在这里(:baz)并将xyzy设置为{:bar=>“bar”}而不会以任何方式影响plugh。如何操作?如果您使用的是Rails(或至少是ActiveSupport),那么这就是您想要的: xyzzy = plugh.
plugh={:bar=>“bar”,:baz=>“baz”}
我希望能够做一些类似xyzy=plugh的事情。一些神奇的东西在这里(:baz)
并将xyzy
设置为{:bar=>“bar”}
而不会以任何方式影响plugh
。如何操作?如果您使用的是Rails(或至少是ActiveSupport),那么这就是您想要的:
xyzzy = plugh.except(:baz)
如果您没有使用Rails,文档中还包括源代码:
def except(*keys)
dup.except!(*keys)
end
def except!(*keys)
keys.each { |key| delete(key) }
self
end
如果未使用活动支持,则可以执行以下操作:
xyzzy = plugh.reject { |k, _| k == :baz }
是的,我也意识到了。答案被编辑以充实Rails为此提供的特定代码。您不需要所有的Rails。只需将ActiveSupport.store plugh存储在另一个哈希中,然后从第二个哈希中删除密钥。@ArupRakshit-首先,可怕的海盗Shawn已经建议了与您建议的内容非常相似的内容…@Urigash我只想我使用的是什-互联网连接…:-)这就是我要找的!谢谢