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
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
# 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
From: Gary Wright [mailto:gwtmp01@mac.com]
Hi,
In message "Re: ruby 1.9 splat in return statement, bug or feature?" on Sat, 17 Feb 2007 12:36:20 +0900, Gary Wright <gwtmp01@mac.com> writes:
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.
Peña, Botp wrote:
...
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.
--
Posted via http://www.ruby-forum.com/\.
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 Matsumoto wrote:
Hi,
In message "Re: ruby 1.9 splat in return statement, bug or feature?" > on Sat, 17 Feb 2007 12:36:20 +0900, Gary Wright <gwtmp01@mac.com> > writes:
>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.
--
Posted via http://www.ruby-forum.com/\.