Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Hashクラス > keep_if
keep_if -> Enumerator
[permalink][rdoc]keep_if {|key, value| ... } -> self
select! -> Enumerator
select! {|key, value| ... } -> self | nil
キーと値を引数としてブロックを評価した結果が真であるような要素を self に残します。
keep_if は常に self を返します。 select! はオブジェクトが変更された場合に self を、 されていない場合に nil を返します。
ブロックが与えられなかった場合は、自身と keep_if から生成した Enumerator オブジェクトを返します。
例:
h1 = {} c = ("a".."g") c.each_with_index {|e, i| h1[i] = e } h2 = h1.dup h1.select! # => #<Enumerator: {0=>"a", 1=>"b", 2=>"c", 3=>"d", 4=>"e", 5=>"f", 6=>"g"}:select!> h1.select! { |k, v| k % 3 == 0 } # => {0=>"a", 3=>"d", 6=>"g"} h1.select! { |k, v| true } # => nil h2.keep_if { |k, v| k % 3 == 0 } # => {0=>"a", 3=>"d", 6=>"g"} h2.keep_if { |k, v| true } # => {0=>"a", 3=>"d", 6=>"g"}
[SEE_ALSO] Hash#select, Hash#delete_if,Hash#reject!