When I call Array#- , it does not call the comparison method for the lines that I am comparing:
class String def <=>(v) puts "#{self} <=> #{v}" super(v) end def ==(v) puts "#{self} == #{v}" super(v) end def =~(v) puts "#{self} =~ #{v}" super(v) end def ===(v) puts "#{self} == #{v}" super(v) end def eql?(v) puts "#{self}.eql? #{v}" super(v) end def equal?(v) puts "#{self}.equal? #{v}" super(v) end def hash() puts "#{self}.hash" super end end p %w{one two three} - %w{two}
It just returns:
["one", "three"]
So what does Array#- do?
In addition, I am using Ruby 1.9.2p290. In 1.8.7, it causes an infinite loop.
Zequez
source share