Deletes every element of the set for which block evaluates to true, and
returns self. Returns an enumerator if no block is given.
# File lib/set.rb, line 380
def delete_if
block_given? or return enum_for(__method__) { size }
# @hash.delete_if should be faster, but using it breaks the order
# of enumeration in subclasses.
select { |o| yield o }.each { |o| @hash.delete(o) }
self
end