sets/eql_members.rb
tests/_examples/sets/eql_members.rb in the metorex repository.
require "set"
class TariffCode
attr_reader :code
def initialize(code)
@code = code
end
def hash
code.hash
end
def eql?(other)
other.is_a?(TariffCode) && code == other.code
end
end
codes = Set.new([TariffCode.new("8471"), TariffCode.new("8471"), TariffCode.new("9403")])
p(codes.size)
p(codes.include?(TariffCode.new("9403")))
codes << TariffCode.new("9403")
p(codes.size)
p(codes.add?(TariffCode.new("8471")))
codes.delete(TariffCode.new("8471"))
p(codes.map(&:code))
p([TariffCode.new("1"), TariffCode.new("1")].to_set.size)
other = Set[TariffCode.new("9403"), TariffCode.new("0101")]
p((codes & other).map(&:code))
p((codes | other).map(&:code).sort)
p(codes.subset?(other))
Output:
2
true
2
nil
["9403"]
1
["9403"]
["0101", "9403"]
true