如何从红宝石中的哈希中收集许多属性
Posted
技术标签:
【中文标题】如何从红宝石中的哈希中收集许多属性【英文标题】:How to collect many attributes from hash in ruby 【发布时间】:2019-11-20 10:18:03 【问题描述】:我想知道是否可以从哈希中收集许多属性。
目前使用 ruby 2.6.3
类似的东西
hash = name: "Foo", email: "Bar", useless: nil
other_hash = hash[:name, :email]
输出应该是另一个哈希,但没有无用的键/值
【问题讨论】:
预期的输出是什么?数组?还是没有无用键值的哈希? 没有无用键值的哈希。 @SebastianPalma 关于如何从哈希中删除密钥并获取剩余哈希的详细答案,有不同的选项可供选择。 ***.com/questions/6227600/… 【参考方案1】:你可以使用Ruby内置的Hash#slice
:
hash = name: "Foo", email: "Bar", useless: nil
p hash.slice(:name, :email)
# :name=>"Foo", :email=>"Bar"
如果使用 Rails,你可以使用Hash#except
,它只接收你想省略的键:
p hash.except(:useless)
# :name=>"Foo", :email=>"Bar"
【讨论】:
【参考方案2】:如果有nil
值的无用键,你也可以使用Hash#compact:
h = name: "Foo", email: "Bar", useless: nil
h.compact #=> :name=>"Foo", :email=>"Bar"
【讨论】:
以上是关于如何从红宝石中的哈希中收集许多属性的主要内容,如果未能解决你的问题,请参考以下文章