functions/splat_variadic_coverage_parens.rb

tests/_examples/functions/splat_variadic_coverage_parens.rb in the metorex repository.

# Method with variadic + fixed params
class Logger
  def log(level, *messages)
    messages.each do |m|
      puts level + ": " + m
    end
  end
end

l = Logger.new
l.log "INFO", "start", "done"

# Standalone function with variadic
def join_all(sep, *parts)
  result = ""
  parts.each do |p|
    if result.length > 0
      result = result + sep
    end
    result = result + p.to_s
  end
  puts result
end

join_all "-", "a", "b", "c"

# Splat expansion in call
def add3(a, b, c)
  a + b + c
end

args = [10, 20, 30]
puts add3(*args)

# Empty variadic
def count_args(*args)
  puts args.length
end

count_args()
count_args 1, 2, 3

Output:

INFO: start
INFO: done
a-b-c
60
0
3