syntax/splat_assignment.rb
tests/_examples/syntax/splat_assignment.rb in the metorex repository.
# A splat in a multiple assignment takes whatever the named targets leave.
first, *rest = [1, 2, 3]
p(first)
p(rest)
only, *nothing = [1]
p(only)
p(nothing)
*leading, last = [1, 2, 3]
p(leading)
p(last)
head, *middle, tail = [1, 2, 3, 4, 5]
p(head)
p(middle)
p(tail)
short, *gap, final = [1, 2]
p(short)
p(gap)
p(final)
*everything = [1, 2]
p(everything)
# A right side that is not an Array reaches the first target alone.
lone, *empty = 9
p(lone)
p(empty)
# Several values on the right are spread the same way.
one, *others = 1, 2, 3
p(one)
p(others)
name, *lines = "first\nsecond\nthird\n".lines.map { |line| line.chomp }
p(name)
p(lines)
Output:
1
[2, 3]
1
[]
[1, 2]
3
1
[2, 3, 4]
5
1
[]
2
[1, 2]
9
[]
1
[2, 3]
"first"
["second", "third"]