From: Sebastian Hungerecker Date: 2007-05-09T00:58:01+09:00 Subject: Re: Equality question Brian Candler wrote: > o1 = [:defuzz_configs, {"conf"=>"foo.txt"}] > o2 = [:defuzz_configs, {"conf"=>"foo.txt"}] > p o1 == o2 # prints true > p o1.hash == o2.hash # prints false ?? <<<<<<<<<<< That's because the Hashs in o1 and o2 are two different objects. >> hash={:bla=>:blubb} => {:bla=>:blubb} >> a1=[:a,hash] => [:a, {:bla=>:blubb}] >> a2=[:a,hash] => [:a, {:bla=>:blubb}] >> a3=[:a,{:bla=>:blubb}] => [:a, {:bla=>:blubb}] >> a1==a3 => true >> a1.hash==a3.hash => false >> a1.hash==a2.hash => true >> hash[:blu]=:blo => :blo >> p a1,a2,a3 [:a, {:bla=>:blubb, :blu=>:blo}] [:a, {:bla=>:blubb, :blu=>:blo}] [:a, {:bla=>:blubb}] => nil >> a1==a3 => false >> a1==a2 => true HTH, Sebastian Hungerecker -- Ist so, weil ist so Bleibt so, weil war so