このマニュアルは既にメンテナンスが終了したバージョンの Ruby を対象としています。 最新版のマニュアルへ

Ruby 3.0 リファレンスマニュアル

instance method Hash#keep_if

keep_if -> EnumeratorRuby 1.9.3 から[permalink][rdoc][edit]
keep_if {|key, value| ... } -> self

キーと値を引数としてブロックを評価した結果が真であるような要素を self に残します。

常に self を返します。

ブロックが与えられなかった場合は、自身と keep_if から生成した Enumerator オブジェクトを返します。

h2 = {}
c = ("a".."g")
c.each_with_index {|e, i| h2[i] = e }

p h2.keep_if  # => #<Enumerator: {0=>"a", 1=>"b", 2=>"c", 3=>"d", 4=>"e", 5=>"f", 6=>"g"}:keep_if>

p h2.keep_if { |k, v| k % 3 == 0 }  # => {0=>"a", 3=>"d", 6=>"g"}
p h2.keep_if { |k, v| true }      # => {0=>"a", 3=>"d", 6=>"g"}

[SEE_ALSO] Hash#select!, Hash#select, Hash#delete_if, Hash#reject!