Replaces the elements with ones returned by collect(). Returns an
enumerator if no block is given.
# File lib/set.rb, line 401
def collect!
block_given? or return enum_for(__method__) { size }
set = self.class.new
each { |o| set << yield(o) }
replace(set)
end