すっきり。
github.com/ruby/ruby/blob/trunk/lib/set.rb#L320-L322
def add?(o)
add(o) unless include?(o)
end
github.com/ruby/ruby/blob/trunk/lib/set.rb#L214-L216
def include?(o)
@hash[o]
end
github.com/ruby/ruby/blob/trunk/lib/set.rb#L312-L315
def add(o)
@hash[o] = true
self
end
github.com/ruby/ruby/blob/trunk/lib/set.rb#L82-L92
def initialize(enum = nil, &block) # :yields: o
@hash ||= Hash.new(false)
enum.nil? and return
if block
do_with_enum(enum) { |o| add(block[o]) }
else
merge(enum)
end
end