使用して型パラメータT.タイプの一般的な機能を備えたScalaではパラメーター問題
def toBitSet[T:Integral](x:T, valueBitwidth:Int, filterBitwidth:Int, bigEndian:Boolean = true, shift:Int = 0) = {
BitSet((for (i <- 0 to (valueBitwidth - 1) if (((x & 0xFF) >> i) & 1) == 1) yield (i + shift)): _*)
}
byteToBitSetとshortToBitSet機能は、一般的な機能のspecializatonです。
def byteToBitSet(x:Byte, filterBitwidth:Int, bigEndian:Boolean = true, shift:Int = 0) = {
toBitSet[Byte](x = x, valueBitwidth = 8, filterBitwidth = filterBitwidth, bigEndian = bigEndian, shift = shift)
}
def shortToBitSet(x:Short, filterBitwidth:Int, bigEndian:Boolean = true, shift:Int = 0) = {
toBitSet[Short](x = x, valueBitwidth = 16, filterBitwidth = filterBitwidth, bigEndian = bigEndian, shift = shift)
}
しかし、Scalaは、エラーメッセージを表示するタイプのTに(>>、&、==、+)演算子を理解していません。私はT
がIntegral型であると指定しましたが、動作しません。この問題を解決する方法
?
このような宣言では、Integral [T]型のメソッドに暗黙のパラメータを導入します。 Scalaの ' 'の類推は' [T <:SomeType] 'です –
Aliaxander