> Schade, dass der Autor hier nicht auf die Zweischneidigkeit
> derartiger Möglichkeiten eingeht, die hier so schön ersichtlich ist.
> Denn nehmen wir statt dem (für das Beispiel sehr überlegt gewählten)
> Minus- ein Pluszeichen. Was drücke ich also mit
>
> > 10 + "3"
Du drückst "103" aus. Die Konvertierung ist in Scala schon dabei.
> aus? Möchte ich den String "3" in einen Integer wandeln und mit 10
> addieren oder möchte ich den Integer 10 in einen String wandeln und
> mit "3" konkatenieren?
Die Regel ist für implicits ist recht "einfach". 10 + "3" ist nämlich
das selbe wie 10.+("3") - also ein normaler Methodenaufruf. Wenn es
die Methode +(str:String) (in der Klasse Int) nicht gibt sucht Scala
nach einer impliziten Konvertierung. Findet der Compiler *genau* eine
Konvertierung so wird diese angewendet. Ansonsten gibt's ne
Fehlermeldung (das Int kein + hat oder das mehr als eine implizite
Konvertierung im Scope ist). Sowohl Eclipse als auch IntelliJ können
die die implicits sogar anzeigen...
> Ganz plötzlich verliert der Code nämlich an Ausdrucksstärke, weil
> mehrere Interpretationen (für den menschlichen Entwickler) möglich
> sind.
Die Möglichkeiten sauberen lesbaren (und vor allem nicht
geschwätzigen) Code zu schreiben überwiegen bei weitem die Nachteile
- die lassen sich nämlich mit Disziplin gut im Griff halten.