使用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