I'm trying to understand the difference between *(1..9)
and [*1..9]
If I assign them to variables they work the same way
splat1 = *(1..9) # splat1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
splat2 = [*1..9] # splat2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
But things get weird when I try to use *(1..9)
and [*1..9]
directly.
*(1..9).map{|a| a.to_s} # syntax error, unexpected '\n', expecting tCOLON2 or '[' or '.'
[*1..9].map{|a| a.to_s} # ["1", "2", "3"...]
I'm guessing part of the problem is with operator precidence? But I'm not exactly sure what's going on. Why am I unable to use *(1..9)
the same I can use [*1..9]
?
p *(1..9).map{|a| a.to_s}
works ok – Turpeth([*1..9]).map
should work fine; however, I think the explicitto_a
method is more clear and essentially just as concise. – Chronicle