【问题标题】:Ruby hash delete_if manyRuby 哈希 delete_if 很多
【发布时间】:2014-05-21 22:13:34
【问题描述】:
Some_hash.delete_if {|key, value| key == "at" || key == "with" || key == "from"}

我只包括了 3 个 ors,但我有一个 7 个列表,这行变得很长而且很丑。有没有办法以更短的方式做到这一点,而不必每次都做key == SOMEVALUE

【问题讨论】:

标签: ruby-on-rails ruby ruby-on-rails-4


【解决方案1】:
SomeHash.except(:key1, :key2, ...)

Rails 带有方便的 Hash#except 扩展:

返回一个包含除给定键之外的所有内容的哈希。

【讨论】:

  • 请注意,#except 返回删除键的重复哈希,请参阅#except! 了解就地修改器。
【解决方案2】:

试试:

keys_to_remove = ['at', 'with', 'from']
hash.delete_if {|key,_| keys_to_remove.include? key}

【讨论】:

  • 虽然@iceman 的回答是最好的,但最终还是这样做了!
【解决方案3】:
%w[at with from]
.each_with_object(Some_hash){|k, h| h.delete(k)}

【讨论】:

    猜你喜欢
    • 2014-03-03
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 2015-01-20
    • 2016-09-11
    • 2017-02-22
    • 2011-07-01
    • 1970-01-01
    相关资源
    最近更新 更多