Since two people asked me in the space of 5 days about this, I thought I'd post a quick demystification of Ruby's "equality" facilities. Namely equal?, ==, eql? and ===.
equal?- always (or should be) purely identity equality, and *should never* be overridden by subclasses==- by default is object identity equality, but *can* be overridden by subclasseseql? - is object value equality and *should* be overridden by subclasses ===- by default same as #==. It is overridden by subclasses that need a "case" equality defined to make sense when used in thecasestatements in awhenconstruct.
0 comments:
Post a Comment