Feature #12210 ยป identity_set.diff
| lib/set.rb (working copy) | ||
|---|---|---|
|
end
|
||
|
end
|
||
|
# IdentitySet implements a Set that compares members based on their identity
|
||
|
# instead of their equality.
|
||
|
#
|
||
|
# == Example
|
||
|
#
|
||
|
# require "set"
|
||
|
#
|
||
|
# a_str = "a"
|
||
|
# set = IdentitySet.new([a_str, a_str, "b", "b"])
|
||
|
#
|
||
|
# p set # => #<IdentitySet: {"a", "b", "b"}>
|
||
|
#
|
||
|
class IdentitySet < Set
|
||
|
def initialize(*args, &block)
|
||
|
@hash = Hash.new.compare_by_identity
|
||
|
super
|
||
|
end
|
||
|
end
|
||
|
module Enumerable
|
||
|
# Makes a set from the enumerable object with given arguments.
|
||
|
# Needs to +require "set"+ to use this method.
|
||
| test/test_set.rb (working copy) | ||
|---|---|---|
|
end
|
||
|
end
|
||
|
class TC_IdentitySet < Test::Unit::TestCase
|
||
|
def test_identityset
|
||
|
a = 'a'
|
||
|
s = IdentitySet[a, a, 'b', 'b']
|
||
|
assert_equal(3, s.size)
|
||
|
assert_equal([a, 'b', 'b'], s.to_a)
|
||
|
end
|
||
|
end
|
||
|
class TC_Enumerable < Test::Unit::TestCase
|
||
|
def test_to_set
|
||
|
ary = [2,5,4,3,2,1,3]
|
||