Scala kurzer und typsicherer Cast-Operator

8

Ich mag Scala isInstanceOf und asInstanceOf Methoden nicht - sie sind lang und asInstanceOf kann eine Exception auslösen, also müssen wir sie paarweise verwenden. Besser ist es, Mustervergleiche zu verwenden: Scala: Wie werfe ich eine Variable? aber für wirklich einfache Operationen kann es auch relativ lang sein. In C # haben wir 'is' und 'as' Operatoren, also wollte ich implizite Definition damit in Scala implementieren. Mein Code sieht so aus:

%Vor%

Es hat einen Vorteil - Null-Objektmuster zu implementieren, aber auch Nachteile:

  • muss den classOf [T] -Operator verwenden - er ist zu lang

  • Overhead verbunden mit implizitem Def für eine solche einfache Operation

Es gibt also keinen praktischen Grund, es zu benutzen. Ich würde gerne wissen, gibt es eine Möglichkeit, dies zu implementieren, ohne die Verwendung von classOf [T]?

    
theres 25.04.2012, 21:01
quelle

1 Antwort

10

Nun, Sie könnten es innerhalb des von Ihnen in der TypeCast-Klasse gemachten Defs kürzen. Anstatt einen Parameter einzugeben, können Sie sich einfach auf den Typ verlassen. Dies würde es sehr verkürzen. Als ein Beispiel könnte das etwa so aussehen:

%Vor%

Zukünftige Anrufe könnten wie folgt aussehen:

%Vor%

Update: Ich habe Manifeste hinzugefügt, um Tippfehler zu vermeiden

    
Jens Egholm 25.04.2012, 21:13
quelle

Tags und Links