From: Eric Hodel Date: 2006-04-11T06:30:37+09:00 Subject: Re: [ ruby-Bugs-4060 ] Array#- fails on arrays of user-defined classes On Apr 10, 2006, at 12:38 PM, noreply@rubyforge.org wrote: > Bugs item #4060, was opened at 2006-04-10 14:38 > You can respond by visiting: > http://rubyforge.org/tracker/? > func=detail&atid=1698&aid=4060&group_id=426 > > Summary: Array#- fails on arrays of user-defined classes > > Initial Comment: > Array#- does't appear to use ==, === or eql?. I think it uses > something below the ruby level. > > When working with user-defined classes, Array#- considers identical > objects to be equal. > > I would understand if it used .equal?, but it doesn't because > Array#- works on strings as if == was called. Here's an example. > > -------------------- > class MyClass > def ==(b) > true > end > end > > p [MyClass.new, MyClass.new, MyClass.new] - [MyClass.new, MyClass.new] > -------------------- > > Expected: [] > Observed: [#, #, #] It uses #hash and #eql? Since you didn't define #hash, #eql? will never be called. -- Eric Hodel - drbrain@segment7.net - http://blog.segment7.net This implementation is HODEL-HASH-9600 compliant http://trackmap.robotcoop.com