web-dev-qa-db-ja.com

Scala配列をScala varargメソッドに渡すには?

以下のコードを検討してください。

private def test(some:String*){

}

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

expect String, found Array[String]を出力するのはなぜですか? Scala可変引数は配列ではありませんか?

Stack OverflowでScala可変引数に関するいくつかの質問を見つけましたが、それらはすべてJava可変引数メソッドの呼び出しまたはScalaリストの配列への変換に関するものです。

59
Cherry

:_*testのパラメーターにこのように追加します

test(some:_*)

そして、期待どおりに動作するはずです。

その魔法の:_*が何をするのか疑問に思うなら、 この質問 を参照してください。

99
Yuhuan Jiang

それは単純だ:

def test(some:String*){}

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