以下の内容はhttps://kmizu.hatenablog.com/entry/2014/05/16/143813より取得しました。


初学者向けの Scala Tips (4) - 可変長引数を取る関数にSeq[T]を渡す

TipsというよりFAQの部類ですが、ときどきつまづく方がいるようなので。

Scalaで以下のような可変長引数を取る関数printAllを定義すると、

def printAll(ss: String*): Unit = {
  ss.foreach(println)
}
printAll("BAZ", "FOO", "BAR")
//BAZ
//FOO
//BAR

のように任意個のStringを渡すことができます。問題は、既に

val fooBar = Seq("FOO", "BAR")

のように既にSeq型のオブジェクトが作られている場合。

fooBarをそのまま引数として渡し、printAll(fooBar)としてしまうと、

(snip) error: type mismatch;
 found   : Seq[String]
 required: String
printAll(fooBar)

というエラーが出てしまいます。これを解決するには、

printAll(fooBar:_*)
//FOO
//BAR

のようにすればOKです。このようにすれば、scalacがfooBarを可変長引数に一つずつ渡したものとして扱ってくれます。




以上の内容はhttps://kmizu.hatenablog.com/entry/2014/05/16/143813より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14