このような任意のバイト数またはブール値をとるクラスをScalaで記述したい
class Bytes(data: Byte*) {
def this(data: Boolean*) = this {
val res: Array[Byte] = convBools2Bytes(data)
res: _*
}
// […]
}
ここで、は:に変換するconvBools2Bytes
関数です。Array[Boolean]
Array[Byte]
def convBools2Bytes(data: Array[Boolean]): Array[Byte]
これにより、次のコンパイラエラーが発生します。
[error] Bytes.scala:5: no `: _*' annotation allowed here
[error] (such annotations are only allowed in arguments to *-parameters)
[error] res: _*
[error] ^
私が理解している限り、このres: _*
ステートメントArray[Byte]
は繰り返されるパラメーターのリストになります(「Scalaでのプログラミング」第2版のセクション8.8で説明されているように)。
なぜそのようなエラーがあり、どうすればそれを回避できますか?