Scalaで繰り返されるパラメーター
1. 概要
この短いチュートリアルでは、Scalaで繰り返しパラメーター機能を使用する方法を説明します。
他の多くのプログラミング言語にも同様の機能があるため、この言語機能はScala専用ではありません。 Javaのように、この機能は varargs としても知られているものもありますが、同じ概念です。
2. Scalaで繰り返されるパラメーター
繰り返しパラメーターのサポートを提供しない言語では、開発者はarrayまたはlistを作成して複数の引数を送信する必要があります。 時々これは面倒になり、ボイラープレートコードになってしまいます。
2.1. 繰り返されるパラメーターを使用した関数の定義
Scalaの内部では、繰り返されるパラメーターは配列として扱われ、空にすることもできます。 したがって、メソッドが繰り返しパラメーターを受け取った場合、配列で行うことは何でもできます。
scala> def myFunction(times: Int, strings: String*): String = {
| (strings.mkString(" ") + "\n") * times
| }
def myFunction(times: Int, strings: String*): String
ただし、繰り返しパラメータを使用する場合は、考慮する必要のあるルールがいくつかあります。
- 繰り返されるパラメータは常に最後のメソッドパラメータです
- 繰り返されるパラメーターは同じタイプである必要があります(つまり、intとStringを送信することはできません)
- メソッドは、最大で1つの繰り返しパラメーターを持つことができます
2.2. 繰り返されるパラメーターを使用した関数の呼び出し
以前に定義した関数の呼び出しは、今では簡単です。 たとえば、3つのStringパラメータを使用して呼び出します。
scala> myFunction(3, "scala", "is", "awesome")
val res0: String =
"scala is awesome
scala is awesome
scala is awesome "
さらに、繰り返されるパラメーターの文字列なしで関数を呼び出すこともできます。 関数でこれを行うことにより、3つの新しい行を取得します。
scala> myFunction(3)
val res1: String = "
"
2.3. スプラットオペレーター
状況によっては、すでに List、がありますが、呼び出すメソッドではパラメーターを繰り返す必要があります。 リストを送信しようとすると、エラーが発生します。
scala> val lst = List("Scala", "is", "awesome")
val lst: List[String] = List(Scala, is, awesome)
scala> myFunction(3, lst)
^
error: type mismatch;
found : List[String]
required: String
この場合、コレクションを繰り返しパラメーターの有効な入力に変換するsplat演算子を使用する必要があります。
scala> myFunction(3, lst:_*)
val res2: String =
"Scala is awesome
Scala is awesome
Scala is awesome"
3. 結論
この短い記事では、Scalaで繰り返しパラメーターを使用する方法を見ました。