How to pass Scala array into Scala vararg method?

Cherry picture Cherry · Jun 26, 2015 · Viewed 32.8k times · Source

Consider the code below:

private def test(some:String*){

}

private def call () {
  val some = Array("asd", "zxc")
  test(some)
}

It prints expect String, found Array[String] Why? Are Scala varargs not arrays?

Note

I found several questions on Stack Overflow about Scala varargs, but all of them are about calling Java varargs methods or about converting Scala lists to arrays.

Answer

Yuhuan Jiang picture Yuhuan Jiang · Jun 26, 2015

Append :_* to the parameter in test like this

test(some:_*)

And it should work as you expect.

If you wonder what that magical :_* does, please refer to this question.