Ruby 2.6.0 リファレンスマニュアル > ライブラリ一覧 > setライブラリ > Setクラス > delete_if

instance method Set#delete_if

delete_if {|o| ... } -> self[permalink][rdoc]
reject! {|o| ... } -> self | nil

集合の各要素に対してブロックを実行し、その結果が真であるようなすべての要素を削除します。

delete_if は常に self を返します。

reject! は、要素が 1 つ以上削除されれば self を、1 つも削除されなければ nil を返します。

require 'set'
s1 = Set['hello.rb', 'test.rb', 'hello.rb.bak']
s1.delete_if {|str| str =~ /\.bak\z/}
p s1 #=> #<Set: {"hello.rb", "test.rb"}>

s2 = Set['hello.rb', 'test.rb', 'hello.rb.bak']
p s2.reject! {|str| str =~ /\.bak\z/} #=> #<Set: {"hello.rb", "test.rb"}>
p s2.reject! {|str| str =~ /\.o\z/}   #=> nil

[SEE_ALSO] Enumerable#reject