From: "Florian Groß" Date: 2006-04-13T23:38:03+09:00 Subject: Re: Array#- jogloran wrote: > I need items to be compared based on their values, and not by object > equality, so I provide #== for the array elements. The problem is that I've > been trying to use Array#- as a set difference-like operation, and it > doesn't seem to respect any kind of user-provided means of defining > equality. A look into the Ruby source seems to indicate that it works by > populating a hash with the elements of the second array, then appending to > the result array if an element of the first array is in the hash. Does this > mean that it is impossible to get the behaviour I want from Array#- as it is > implemented? Nope, you just need to redefine hash and alias == as eql?. This will work: def hash() # But it's a good idea to actually define this in a meaningful way so # that putting the object into hashes is efficient. 0 end alias :eql? :== -- http://flgr.0x42.net/