使用Scala的命令行REPL:递归超载语义 - JVM语言
def foo(x: Int): Unit = {}
def foo(x: String): Unit = {println(foo(2))}
给
error: type mismatch;
found: Int(2)
required: String
看来你不能定义重载在REPL递归方法。我认为这是Scala REPL中的一个bug,并提交了它,但它几乎立即被关闭了,“wontfix:鉴于解释器的语义,我没有看到任何可以支持的方式,因为必须编译这两个方法一起。”他建议将这些方法放在一个封闭的对象中。
是否有JVM语言实现或Scala专家谁可以解释为什么?我可以看到,如果方法互相调用,但在这种情况下会出现问题?
或者,如果这个问题太大了,而且您认为我需要更多的必备知识,那么某人是否有任何有关语言实现的书籍或网站的良好链接,特别是在JVM上? (我知道约翰·罗斯的博客和编程语言语用学的书......但是就是这样。:)
优秀的答案Daniel,谢谢。另外,我喜欢你的博客。 :) – 2008-09-23 18:27:29