Scala wurde von vielen meiner Kollegen als komplex bezeichnet, und einige gaben all diesen die Schuld neuen Funktionen dafür verantwortlich. Während die meisten Programmierer die OO-Funktionen kennen und zumindest die anständigen auch über funktionale Programmierung Bescheid wissen, gibt es eine Funktion in Scala, für die ich die historischen Ursprünge nicht kenne.
Angesichts der Tatsache, dass es ein wichtiges Mantra unseres Berufs ist, das Rad nicht neu zu erfinden, bin ich ziemlich zuversichtlich, dass es Scala nicht gibt keine tatsächliche unerhört-vor - Funktionen, aber ich stehe auf diesen einen zu korrigierenden , wenn nötig.
Um auf die eigentliche Frage zu kommen: Obwohl ich mir der Ursprünge der meisten Funktionen von Scala bewusst bin, habe ich so etwas noch nie gesehen implicit
. Gibt es andere (ältere!) Sprachen, die diese Funktion ebenfalls bieten?
Ist es sinnvoll, die verschiedenen Fälle von Impliziten zu unterscheiden (da sie aus verschiedenen Quellen stammen können), nämlich implizite Konvertierungen und implizite Parameter?
Antworten:
Ich bin mit Brians Antwort auf diese andere Frage nicht einverstanden.
Soweit ich weiß, gibt es keine impliziten für keine andere Sprache ein Konzept. Das Änderungsprotokoll für Scala impliziert, dass es sich um eine Verallgemeinerung von Ansichtsgrenzen handelt, und dass eine Ansichtsgrenze selbst eine Verallgemeinerung der automatischen Typkonvertierung ist, was in der Tat sehr häufig ist.
Impliziert dann aktivierte Typklassen, aber ich wäre sehr überrascht, wenn das die ursprüngliche Absicht war.
Bearbeiten
In den Versionshinweisen für Scala 2.0 (2006) heißt es:
Das bedeutet natürlich nicht, dass implizite Parameter mit dem Ziel eingeführt wurden, Ansichten zu ersetzen.
Odersky gefällt es jedoch sehr gut, wenn ein einziges Konzept mehrere ersetzen kann. In diesem Sinne mag es durchaus der Fall sein, dass Odersky Typklassen wollte, aber keinen Mechanismus einführen wollte, der diese ausschließlich handhabt, und deshalb etwas anderes einbrachte, mit dem er ein Konzept (Views) entfernen und ersetzen konnte mit einem allgemeineren Konzept, das sowohl Ansichten als auch Typklassen behandelt.
Falls sich jemand dafür interessiert, sind auch die Poor Man's Type Classes, auf die Brian bei Stack Overflow zurückgegriffen hat, auf 2006 datiert. Odersky war sich der Verbindung zwischen Impliziten und Typklassen klar bewusst, als er sie einführte.
Dennoch stehe ich zu meinem Anspruch. :-)
quelle
Implicit
in scala bedeutet zwei verschiedene dingeimplict
Schlüsselworts), das die erste Version von Scala um etwa ein Jahr vorläuft.quelle
Ich habe eine ähnliche Frage zu Stack Overflow gestellt. Die am häufigsten gewählte Antwort und andere legen nahe, dass die Ursprünge in Haskell liegen.
quelle