ruby 1.9 splat in return statement, bug or feature?

G

Gary Wright

What's going on with splat in 1.9?


$ ruby -e 'def foo; return *[1]; end; p foo'
1

$ ruby-1.9 -e 'def foo; return *[1]; end; p foo'
[1]


Gary Wright
 
P

Peña, Botp

From: Gary Wright [mailto:[email protected]]=20
# What's going on with splat in 1.9?
# $ ruby -e 'def foo; return *[1]; end; p foo'
# 1
# $ ruby-1.9 -e 'def foo; return *[1]; end; p foo'
# [1]

consistency perhaps?

r@pc4all:~# ruby -e 'def foo; return *[1]; end; p foo'
1
r@pc4all:~# ruby -e 'def foo; return *[1,2]; end; p foo'
[1, 2]

kind regards -botp
 
C

Charles Lowe

...

consistency perhaps?

r@pc4all:~# ruby -e 'def foo; return *[1]; end; p foo'
1
r@pc4all:~# ruby -e 'def foo; return *[1,2]; end; p foo'
[1, 2]

kind regards -botp

It seems somehow less consistent when viewed another way though. I think
splatting a literal array should be equivalent to having written a plain
comma-delimited list:

def bar(*args); end

bar 1
bar(*[1])
bar 1, 2
bar(*[1, 2])

In which case, for return:

return *[1] => return 1 => 1
return *[1, 2] => return 1, 2 => [1, 2]

Its not going to really bother me at any rate though.
 
M

Macario Ortega

Men thats a real bummer, i love "peeling" arrays like this:

a = *[1] #=> 1
a = *[1,2] # => [1,2]

Some of my code is gonna break.




Yukihiro said:
Hi,

In message "Re: ruby 1.9 splat in return statement, bug or feature?"
|What's going on with splat in 1.9?
|
|$ ruby -e 'def foo; return *[1]; end; p foo'
|1
|
|$ ruby-1.9 -e 'def foo; return *[1]; end; p foo'
|[1]

In 1.9, values (i.e. result of splat) are always represented by array,
so that we won't confuse array as an value with array as values
representation.

matz.
 

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

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top