*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:

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]]

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

···

--
Alex

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

···

On Nov 28, 2:46 pm, Trans <transf...@gmail.com> wrote:

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.