可変長引数としてリストを渡す


可変長引数の定義

可変長引数にするには以下のように書けば

  def output(strs: String*) { strs.foreach(print) }
  output("hge1 ", "hoge2 ", "hoge3 ")

以下の出力が得られます。

hge1 hoge2 hoge3

List[String]を渡す

可変長引数を取る関数にListを渡すと、

  val hoges = "hge1 " :: "hoge2 " :: "hoge3 " :: Nil
  output2(hoges)

以下のようにエラーになります。

[error]  found   : List[java.lang.String]
[error]  required: String
[error]     output2(hoges)
[error]             ^
[error] one error found

_* シンボル

こんな場合は、_* シンボルを使うと可変長引数にListで渡せて、

  val hoges = "hge1 " :: "hoge2 " :: "hoge3 " :: Nil
  output2(hoges: _*)

以下の出力が得られます。

hoge1 hoge2 hoge3