Functions may take a varying number of parameters. To define one, just
add ... to the last parameter name:
function foo = |a, b, c...| {
# ...
}Here, c catches the variable arguments in an array, just like it would
be the case with Java. You can thus treat c as being a Java object of
type Object[].
Calling variable-arity functions does not require wrapping the last
arguments in an array. While invoking the foo function above, the
following examples are legit:
# a=1, b=2, c=[] foo(1, 2) # a=1, b=2, c=[3] foo(1, 2, 3) # a=1, b=2, c=[3,4] foo(1, 2, 3, 4)
Because the parameter that catches the last arguments is an array, you may call array methods. Given:
function elementAt = |index, args...| {
return args: get(index)
}then:
# prints "2" println(elementAt(1, 1, 2, 3))