Uso de línea de comandos de Scala REPL:semántica recursivas sobrecarga en el Scala REPL - idiomas JVM
def foo(x: Int): Unit = {}
def foo(x: String): Unit = {println(foo(2))}
da
error: type mismatch;
found: Int(2)
required: String
Parece que no se puede definir métodos sobrecargados recursivas de la REPL. Pensé que esto era un error en Scala REPL y lo archivé, pero se cerró casi instantáneamente con "wontfix: no veo ninguna manera de que esto pueda ser respaldado dada la semántica del intérprete, porque estos dos métodos deben compilarse". juntos." Él recomendó poner los métodos en un objeto cerrado.
¿Hay una implementación de lenguaje JVM o un experto en Scala que pueda explicar por qué? Puedo ver que sería un problema si los métodos se llamaran entre sí, por ejemplo, ¿pero en este caso?
O si esta es una pregunta demasiado grande y cree que necesito más conocimientos previos, ¿alguien tiene buenos enlaces a libros o sitios sobre implementaciones de idiomas, especialmente en la JVM? (Conozco el blog de John Rose, y el libro Programming Language Pragmatics ... pero eso es todo :)
Excelente respuesta Daniel, gracias. Además, me gusta tu blog. :) –