Ich versuche, mit einer generischen Funktion (toBitSet) unter Verwendung von Typ-Parameter T.Typ Parameter Ausgabe in Scala mit generischer Funktion
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 und shortToBitSet Funktionen der generischen Funktion specializaton werden zu kommen.
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)
}
jedoch Scala versteht nicht die Operatoren (>>, &, ==, +) auf Typen T eine Fehlermeldung zu zeigen. Ich habe angegeben, dass T
Integral-Typ ist, aber es funktioniert nicht.
Wie dieses Problem zu lösen?
Mit einer solchen Deklaration führen Sie einen impliziten Parameter für Ihre Methode vom Typ 'Integral [T]' ein. Scalas Analogon für '' ist '[T <: SomeType]' –
Aliaxander