Mit Scala Befehlszeile REPL:rekursive Überlastung Semantik in der Scala REPL - JVM Sprachen
def foo(x: Int): Unit = {}
def foo(x: String): Unit = {println(foo(2))}
gibt
error: type mismatch;
found: Int(2)
required: String
Es scheint, dass Sie nicht rekursive Methoden in der REPL überlastet definieren. Ich dachte, das sei ein Fehler in der Scala REPL und habe ihn abgelegt, aber er wurde fast augenblicklich mit "wontfix" geschlossen: Ich sehe keine Möglichkeit, dass dies angesichts der Semantik des Interpreters unterstützt werden könnte, da diese beiden Methoden kompiliert werden müssen zusammen." Er empfahl, die Methoden in ein umschließendes Objekt zu setzen.
Gibt es eine JVM-Sprachimplementierung oder einen Scala-Experten, der erklären könnte, warum? Ich kann sehen, dass es ein Problem wäre, wenn sich die Methoden gegenseitig aufrufen würden, aber in diesem Fall?
Oder wenn das eine zu große Frage ist und Sie denken, dass ich mehr Vorwissen benötige, hat jemand gute Links zu Büchern oder Seiten über Sprachimplementierungen, besonders auf der JVM? (Ich weiß über John Rose Blog und das Buch Programmiersprache Pragmatics ... aber das ist es. :)
Ausgezeichnete Antwort Daniel, danke. Außerdem mag ich dein Blog. :) –