*hash is different from hash.to_a?

Has this come up before? I don;t recall. But just the same. Does this
seem inconsistent to you?

irb(main):003:0> a = *{:a=>1}
=> [:a, 1]
irb(main):004:0> a = *{:a=>1,:b=>2}
=> [[:b, 2], [:a, 1]]

vs.

irb(main):006:0> a = {:a=>1}.to_a
=> [[:a, 1]]
irb(main):007:0> a = {:a=>1,:b=>2}.to_a
=> [[:b, 2], [:a, 1]]

T.

Trans wrote:

irb(main):006:0> a = {:a=>1}.to_a
=> [[:a, 1]]
irb(main):007:0> a = {:a=>1,:b=>2}.to_a
=> [[:b, 2], [:a, 1]]

Not really inconsistent - * unwraps its argument if it can. Observe:

irb(main):001:0> a = *[1,2]
=> [1, 2]
irb(main):002:0> a = *[1]
=> 1

On Nov 28, 2:46 pm, Trans [email protected] wrote:

irb(main):006:0> a = {:a=>1}.to_a
=> [[:a, 1]]
irb(main):007:0> a = {:a=>1,:b=>2}.to_a
=> [[:b, 2], [:a, 1]]

T.

Splat behavior is going to be slightly different in 1.9 [1] (e.g.,
splat just returns the whole hash, regardless of element count, inside
a single array). Just thought you might like to know so you don’t end
up writing brand new legacy code. :wink:

[1]
http://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-talk/214897?214708-244931

Regards,
Jordan