落書きノート

ふと自分が気になった事を書いてます

Scala 可変長引数

Rubyのような柔軟さがありますね。

scala> def showMessages(args: String*) = for(arg <- args) println(arg)
showMessages: (args: String*)Unit

scala> showMessages()

scala> showMessages("hello")
hello

scala> showMessages("hello","Scala")
hello
Scala

scala> val array = Array("Hello","Scala")
array: Array[String] = Array(Hello, Scala)

scala> showMessages(array)
<console>:14: error: type mismatch;
 found   : Array[String]
 required: String
       showMessages(array)
                    ^

scala> showMessages(array:_*)
Hello
Scala

args:Stringと記述することで可変長引数を使うことができます。配列を渡す場合は、引数の後に_と記述することで、渡すことが出来るようになります。この他にもデフォルト引数やプレースホルダ構文などがあります。またこの記事以降、投稿するかもしれません。