Warum Scala implizit umwandeln Char zu Int?

Blick auf scala Predef - Objekt, das automatisch importiert ist, fand ich die folgende Edelstein

implicit def char2int(x : Char) : Int

Führte dies zu einer schmierigen bugs schleichen sich in mein code (verwendet _1 statt _2 im Map[Char,Int]). Ich weiß wirklich nicht, warum würde ich wollen implizit konvertieren Char zu Int. Die ganze Idee des habens der Char - Typ (eine bloße Zahl) ist, so dass ich nicht verwenden Sie es als eine Zahl (oder Umgekehrt).

Ich benutze das scala ' s Typsystem, um nicht Fehler wie das!

Nur (schlechte) Entschuldigung, wenn ich etwa ist kompatibel mit Java ist schrecklich Verhalten.

update: Der Hauptgrund, die zwei Antworten bisher, ist, dass die implizite Konvertierung wird durchgeführt, um die Unterstützung bestellt Handlungen auf die Char geben. So, dass zum Beispiel 'c'+1 erzeugen würde d. Wenn es das ist, was Sie wollen, Sie tun sollten,

class Char ...
    ...
    def +(x:Int) = (this.toInt+x).toChar
    def <(x:Char) = this.toInt < x.toInt

- und man könnte hinzufügen, und vergleichen Sie die Zeichen nach Ihren wünschen. Die Tatsache, dass Char ist das einzige 16-bit Zahl, die nur bedeutet, dass wir brauchen eine neue Word (oder Short) geben.

  • Ich habe gebissen worden von diesem zu, so dass Sie nicht allein sind gefragt.
Schreibe einen Kommentar