Scala FAQ: How do I use the Scala varargs syntax (or, What is the Scala varargs syntax)?
A Scala function with a varargs parameter
You can define a Scala function that accepts a varargs parameter like this:
def printAll(strings: String*): Unit = strings.map(println)
The part of this code that makes strings a varargs parameter is the *
symbol after the String
declaration, as highlighted in this line of code in the function declaration:
def printAll(strings: String*): Unit = _
Calling a function with a varargs parameter
Once you've defined a function (or method) that accepts a varargs field, you can call that function like this:
printAll("foo")
this:
printAll("foo", "bar")
or this:
printAll("foo", "bar", "baz")
and so on.
Note: Within your function, such as in my printAll
function, the variable strings
is created as a Scala Array.
A complete Scala varargs example
If you'd like to experiment with this Scala varargs syntax on your own computer, here's the source code for a complete Scala 2 application that you can use to test with:
object ScalaVarargsTests { def main(args: Array[String]) { printAll("foo", "bar", "baz") } def printAll(strings: String*): Unit = strings.map(println) }
Just save this in a file named something like varargs.scala
, and then run your tests with the Scala interpreter like this:
$ scala varargs.scala
As you can see, the Scala varargs syntax is simple. That's one thing I like about Scala, it's a very brief, "low ceremony" language.
For more details on how this works, see my tutorials, Scala’s missing splat/underscore operator _* (used as :_*), and How to create methods that take variable-arguments (varargs) fields.