Method Arguments
Splat Arguments
The splat operator gathers extra positional arguments into an array.
splat argument
`*args` captures any number of positional values passed to a method.
Splat Arguments
splat_arguments.rb
Replay: real traced execution (multi-file project)
def total(*numbers)
numbers.sum
end
extra = 4
values = [2, 3, extra]
result = total(*values)
puts "values=#{values.join(",")}"
puts "count=#{values.length}"
puts "total=#{result}"
def total(*numbers)
numbers.sum
end
extra = 1
values = [2, 3, extra]
result = total(*values)
puts "values=#{values.join(",")}"
puts "count=#{values.length}"
puts "total=#{result}"
def total(*numbers)
numbers.sum
end
extra = 10
values = [2, 3, extra]
result = total(*values)
puts "values=#{values.join(",")}"
puts "count=#{values.length}"
puts "total=#{result}"
extra ← 4, values ← [2, 3, 4]
5extra→ 4 = 4 #@extra=1, 106values→ [2, 3, 4] = [2, 3, extra4]7result = total(*values[2, 3, 4])def total(*numbers)
1def total(*numbers[2, 3, 4])2 numbers.sum93endresult ← 9
6values = [2, 3, extra]7result→ 9 = total(*values[2, 3, 4])89puts "values=#{values.join(",")2,3,4}"10puts "count=#{values.length3}"11puts "total=#{result9}"outputvalues=2,3,4 count=3 total=9
extra ← 1, values ← [2, 3, 1]
5extra→ 1 = 16values→ [2, 3, 1] = [2, 3, extra1]7result = total(*values[2, 3, 1])def total(*numbers)
1def total(*numbers[2, 3, 1])2 numbers.sum63endresult ← 6
6values = [2, 3, extra]7result→ 6 = total(*values[2, 3, 1])89puts "values=#{values.join(",")2,3,1}"10puts "count=#{values.length3}"11puts "total=#{result6}"outputvalues=2,3,1 count=3 total=6
extra ← 10, values ← [2, 3, 10]
5extra→ 10 = 106values→ [2, 3, 10] = [2, 3, extra10]7result = total(*values[2, 3, 10])def total(*numbers)
1def total(*numbers[2, 3, 10])2 numbers.sum153endresult ← 15
6values = [2, 3, extra]7result→ 15 = total(*values[2, 3, 10])89puts "values=#{values.join(",")2,3,10}"10puts "count=#{values.length3}"11puts "total=#{result15}"outputvalues=2,3,10 count=3 total=15