Ich habe den Code, instance.get
gibt Wert zurück, und basierend auf dem Typ, den ich entsprechend verarbeitet.Merging mehrere Fall (in Übereinstimmung/Fall) in Scala
instance.get match {
case v:Range => {
val sizeInBytes = util.conversion.Util.getBytesForBits(v.size)
val value = v.decode(contentByteArray.slice(index, index + sizeInBytes))
index += sizeInBytes
res(key) = value
}
case v:Encoding => {
val sizeInBytes = util.conversion.Util.getBytesForBits(v.size)
val value = v.decode(contentByteArray.slice(index, index + sizeInBytes))
index += sizeInBytes
res(key) = value
}
...
}
Im Code, ich habe Vervielfältigung für den Range
und Encoding
Typen. Wie kann ich die beiden Fälle zusammenführen?
Ich versuchte den |
Operator, aber es funktioniert nicht.
case v:Range | v:Encoding
Erhalten Sie einen Fehler?Ich habe einige Nachforschungen angestellt, und ich denke, dass diese Art von Code "variable Bindung in alternativen Mustern" von Scala möglicherweise nicht erlaubt wird. Siehe https://issues.scala-lang.org/browse/SUGGEST-25 –
Funktioniert 'case v @ (Bereich | Encoding) => {...}? –