functions/splat_basic.rb

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

# Variadic parameter collects remaining args
def log(level, *messages)
  messages.each do |m|
    puts(level + ": " + m)
  end
end

log("INFO", "starting", "loading", "done")

# Splat with no extra args
def first_rest(first, *rest)
  puts(first)
  puts(rest.length)
end

first_rest("only")

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

args = [1, 2, 3]
puts(add(*args))

# Splat with some fixed and some expanded
def greet(greeting, name)
  puts(greeting + ", " + name)
end

pair = ["Hi", "Alice"]
greet(*pair)

Output:

INFO: starting
INFO: loading
INFO: done
only
0
6
Hi, Alice