From: katz bo Date: 2009-12-22T01:02:33+09:00 Subject: [ruby-core:27271] [Bug #2422] splat operator fails on array of 1 element Issue #2422 has been updated by katz bo. Thank you, Benoit Daloze. I wrote: > What does Ruby do with a = *[] ? Let me illustrate an IMO proper way: > Ruby looks at *[] and goes, "Fine, let me unpack it." > Ruby unpacks *[]. > Then Ruby goes, "Nothing? But I can't _carry_ ! No.. not in an > assignment! Wait.. Let's do it!" > Ruby marks it as nil. As now I think I understand assignment better, I'd like to correct myself a bit: foo = *[] When processing the above line, the Ruby interpreter does these things: 1) First Ruby sees the left side of the assignment, i.e. foo =, and he points foo to nil. 2) Then Ruby tries to evaluate the rvalue. Looking at the *, Ruby unpacks the array []. 3) Ruby gets a little surprised when he finds it's empty in there. 4) So Ruby (happily) does nothing, because there is nothing to re-point foo to. That's the story. And this story tells me foo ends up nil. What's the new story about ruby 1.9 if it's not a bug? ---------------------------------------- http://redmine.ruby-lang.org/issues/show/2422 ---------------------------------------- http://redmine.ruby-lang.org