23

List/Seq/Array を可変長の引数リストに展開する方法に困惑しています。

タプルを受け入れる te​​st_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")))
                        ^

そして、もう 1 つの絶望的な試み:

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 を引数リストに展開する方法は?

前もって感謝します!

4

1 に答える 1

49

を追加する必要があります:_*

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!
于 2012-06-01T00:11:34.833 に答える