Подтвердить что ты не робот

Как передать массив Scala в метод Scala vararg?

Рассмотрим приведенный ниже код:

private def test(some:String*){

}

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

Он печатает expect String, found Array[String] Почему? Scala varargs не массивы?

Примечание

Я нашел несколько вопросов о переполнении стека о Scala varargs, но все они касаются вызова методов Java varargs или преобразования списков Scala в массивы.

4b9b3361

Ответ 1

Добавьте :_* к параметру в test, как этот

test(some:_*)

И он должен работать так, как вы ожидаете.

Если вам интересно, что делает этот магический :_*, обратитесь к этому вопросу.

Ответ 2

Это просто:

def test(some:String*){}

def call () {
  val some = Array("asd", "zxc")
  test(some: _*)
}