Ruby hash delete_if很多

Moh*_*awy 1 ruby ruby-on-rails ruby-on-rails-4

Some_hash.delete_if {|key, value| key == "at" || key == "with" || key == "from"}
Run Code Online (Sandbox Code Playgroud)

我只包括3个,但我有一个7的列表,这条线变得非常长而且丑陋.有没有办法以较短的方式做到这一点而不必key == SOMEVALUE每次都这样做?

Eye*_*dic 6

SomeHash.except(:key1, :key2, ...)
Run Code Online (Sandbox Code Playgroud)

Rails附带了方便的Hash#,除了扩展名:

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

  • 请注意,`#except`返回一个重复的哈希,并删除了键,请参阅`#except!`以获取就地增变器. (4认同)