Scala: развернуть список кортежей в список аргументов переменной длины кортежей - программирование
Подтвердить что ты не робот

Scala: развернуть список кортежей в список аргументов переменной длины кортежей

Я озадачен тем, как развернуть List/Seq/Array в список аргументов переменной длины.

Учитывая, что у меня есть функция test_func, принимающая кортежи:

scala> def test_func(t:Tuple2[String,String]*) = println("works!")
test_func: (t: (String, String)*)Unit

Что работает, когда я передаю кортежи:

scala> test_func(("1","2"),("3","4"))
works!

Из чтения ссылки Scala у меня сложилось сильное впечатление, что следующие работы также будут работать:

scala> test_func(List(("1","2"),("3","4")))
<console>:9: error: type mismatch;
 found   : List[(java.lang.String, java.lang.String)]
 required: (String, String)
              test_func(List(("1","2"),("3","4")))
                        ^

И еще одна отчаянная попытка:

scala> test_func(List(("1","2"),("3","4")).toSeq)
<console>:9: error: type mismatch;
 found   : scala.collection.immutable.Seq[(java.lang.String, java.lang.String)]
 required: (String, String)
              test_func(List(("1","2"),("3","4")).toSeq)

Как расширить List/Seq/Array в список аргументов?

Заранее благодарю вас!

4b9b3361

Ответ 1

Вам нужно добавить :_*.

scala> test_func(List(("1","2"),("3","4")):_*)
works!
scala> test_func(Seq(("1","2"),("3","4")):_*)
works!
scala> test_func(Array(("1","2"),("3","4")):_*)
works!