如何在Ruby/Rails中从散列中删除一个键并获取剩余的散列?

要将新对添加到哈希,我需要:

{:a=>1,:b=>2}。合并!({:c=>3})#=>{:a=>1,:b=>2,:c=>3}

有没有类似的方法从散列中删除密钥

这项工作:

{:a=>1,:b=>2}。拒绝!{| k | k==:a}#=>{:b=>2}

但我希望有这样的东西:

{:a=>1,:b=>2}。删除!(:a);{:b=>2}

重要的是,返回值将是剩余的散列,因此我可以执行以下操作:

foo(my|u hash.reject!{k | k==my_key})

排成一行

Rails有一个except/except!方法返回已删除这些键的哈希值。如果您已经在使用Rails,那么创建自己的版本是没有意义的

类哈希
#返回一个散列,该散列包含除给定键以外的所有内容。
#hash={a:true,b:false,c:nil}
#除(:c)#=>{a:true,b:false}
#散列#=>{a:true,b:false,c:nil}
#
#这对于将一组参数限制为除少数已知切换之外的所有参数非常有用:
#@person.update(参数[:person]。除了(:admin))
def(除(*键外)
重复,除了!(*钥匙)
终止
#替换没有给定键的哈希。
#hash={a:true,b:false,c:nil}
#哈什,除了!(:c)#=>{a:true,b:false}
#散列#=>{a:true,b:false}
除此之外!(*钥匙)
keys.each{| key | delete(key)}
自己
终止
终止

发表评论