Ich habe in letzter Zeit ein bisschen an der Implementierung eines binären Netzwerkprotokolls in Scala gearbeitet. Viele der Felder in den Paketen sind natürlich Scala Shorts zugeordnet. Ich möchte eine Short
Variable prägnant erhöhen (kein Wert). Im Idealfall möchte ich etwas wie s += 1
(was für Ints funktioniert).
Der Operator +=
ist nicht auf Short
definiert, daher scheint es eine implizite Konvertierung von s
in eine Int
vor der Addition zu geben. Außerdem gibt Short
s + -Operator ein Int
zurück.
So funktioniert es bei Ints:
Für jetzt gehe ich mit s = (s + 1).toShort
Irgendwelche Ideen?
Sie können eine implizite Methode definieren, die Int
in Short
konvertiert:
Der Compiler wird es verwenden, um die Typen übereinstimmen zu lassen. Beachten Sie jedoch, dass das implizit auch einen Mangel hat, irgendwo könnte eine Konvertierung stattfinden, ohne auch nur zu wissen warum, nur weil die Methode in den Bereich importiert wurde, leidet auch die Lesbarkeit des Codes.
Tags und Links scala primitive-types primitive