7rans
(7rans)
28 November 2007 20:46
1
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.
[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.