Variadic Functions in Ruby
Variadic functions can be called with any number of trailing arguments. For example, fmt.Println
is a common variadic function.
Here’s a function that will take an arbitrary number of int
s as arguments.
def sum(*nums)
print "#{nums} "
total = 0
nums.each do |num|
total += num
end
puts total
end
Within the function, the type of nums
is equivalent to Array
. We can call nums.length
, iterate over it with each
, etc.
Variadic functions can be called in the usual way with individual arguments.
sum(1, 2)
sum(1, 2, 3)
If you already have multiple args in an array, apply them to a variadic function using function(*array)
like this.
nums = [1, 2, 3, 4]
sum(*nums)
To run the program, simply use ruby
to execute the script.
$ ruby variadic-functions.rb
[1, 2] 3
[1, 2, 3] 6
[1, 2, 3, 4] 10
Another key aspect of functions in Ruby is their ability to form closures, which we’ll look at next.