Should hash equality ignore default values ?

  • Thread starter Tomasz Wegrzanowski
  • Start date
T

Tomasz Wegrzanowski

Hash equality right now ignores the default values.
So a == b may be true even if a[0] == b[0] would be false.

Is this behaviour intended ?

irb(main):001:0> a = Hash.new(0)
=> {}
irb(main):002:0> b = Hash.new(42)
=> {}
irb(main):003:0> a == b
=> true
irb(main):004:0> a[0] == b[0]
=> false
irb(main):005:0> c = Hash.new{|ht,k| ht[k] = 5}
=> {}
irb(main):006:0> a == c
=> true
irb(main):007:0> a[0] == c[0]
=> false
 
R

Robert Dober

Hash equality right now ignores the default values.
So a == b may be true even if a[0] == b[0] would be false.

Is this behaviour intended ?

irb(main):001:0> a = Hash.new(0)
=> {}
irb(main):002:0> b = Hash.new(42)
=> {}
irb(main):003:0> a == b
=> true
irb(main):004:0> a[0] == b[0]
=> false
irb(main):005:0> c = Hash.new{|ht,k| ht[k] = 5}
=> {}
irb(main):006:0> a == c
=> true
irb(main):007:0> a[0] == c[0]
=> false
Good question Tomasz and furthermore....
irb(main):006:0> h=Hash.new{|h,k|h[k]=1}
=> {}
irb(main):007:0> g=Hash.new{|h,k|h[k]=2}
=> {}
irb(main):008:0> h==g
=> true
irb(main):009:0> h[1] ### We just must not forget that this is an assignment!!!
=> 1
irb(main):010:0> h==g
=> false

The second result of the comparision is clear h== {1 =>1} and g=={}

although this might be surprising I think it is about ok, without this
we could not compare to literals...
tough call though
I am eager to hear other opinions.

Robert
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,982
Messages
2,570,190
Members
46,740
Latest member
AdolphBig6

Latest Threads

Top