[Scala]可変長引数と : _*

2011年12月15日

Scalaで可変長引数を受け取る関数を定義する時は

[scala]def func(args: String*) = args.foreach(println)[/scala]

と書く

で、この関数に対して

[scala]func( "test1", "test2", "test3")[/scala]

とすれば、

[text]test1
test2
test3[/text]

となる

で、本題で、「: _*」ですが

この可変長引数を取る関数にリストを渡す時に使用します。

[scala]val list = List("test1", "test2", "test3")
func(list)[/scala]

では、

[text]<console>:35: error: type mismatch;
found   : List[/text]

[text]required: String func(list)[/text]

のようなエラーになりますが

[scala]func(list: _*)[/scala]

とすれば、正常に出力されます。

Scala

Posted by GENDOSU