ScalaのRepeated Parameters

819 ワード

Scalaは関数の最後のパラメータが反復可能であることを可能にする.これにより、ユーザは、関数に変長パラメータのリストを渡すことができる.繰り返し可能なパラメータを示すには、そのパラメータのタイプにアスタリスクを付ける必要があります.例:
def echo(args: String*) = for (arg 

上記の定義に従って、echo関数を呼び出すには、0または複数のStringパラメータを使用します.
echo() 
echo("one")
echo(“hello”,“world!”)

関数内部では、繰り返し可能なパラメータのタイプは、このパラメータが示すタイプの配列形式です.したがって,argsというString型として宣言された繰返し可能なパラメータは,echo関数内部では実はArray[String]型である.ただし、対応するタイプの配列パラメータを重複可能なタイプのパラメータに直接渡すと、コンパイルエラーが表示されます.
val arr = Array("what's", "up", "doc?")
echo(arr) //     :type mismatch

パラメータ伝達を完了するには、配列パラメータの後に:_*を追加する必要があります.
echo(arr: _*)

このシンボル(_*)は、配列を単一のパラメータとして渡すのではなく、配列内の各要素をパラメータとしてecho関数に渡すことをコンパイラに伝える.