Da eine Schlüsselregel von implicits ist, dass immer nur einer angewendet wird, um einen bestimmten (Unter-) Ausdruckstyp zu überprüfen, pimpen Sie RichString
, um wiederum das Komplement der Methoden hinzuzufügen, die es zu String
hinzufügt. Es wird Ihnen nicht erlauben, die Methoden Ihrer Klasse RicherString
(wenn Sie so wollen) zu sehen, als wären sie direkt in String-Instanzen verfügbar. Sie wären verfügbar, wenn Sie natürlich ein RichString
hätten, und RichString
-Instanzen sind von String
instances einfach durch einfache Typzuschreibung verfügbar. Aber es ist nicht das, was jemand als bequem bezeichnen würde.
Aus praktischen Gründen ist das, wonach Sie fragen, in Scala nicht wirklich möglich.
Andererseits, wenn Sie nur eine alternative Erweiterung von String
benötigen, können Sie einfach Ihre eigene erweiterte String-Klasse definieren. Wenn es zwischen den definierten und den in RichString definierten Methoden keine Überlappung gibt, gibt es für den Compiler keine Unklarheiten, die bei der Entscheidung, welche Anwendung zu treffen ist, aufgelöst werden müssen. Das ist wahrscheinlich gut genug, oder?
Außerdem wird dieser Ansatz (eine alternative, nicht überlappende implizite Konvertierung) nicht unterbrochen, wenn Sie zu Scala 2.8 wechseln, die StringOps
anstelle von RichString
hat.
Um dies zu tun, würden Sie etwas ähnliches wie folgt tun:
%Vor%