Sử dụng dòng lệnh REPL Scala của:ngữ nghĩa đệ quy quá tải trong Scala REPL - ngôn ngữ JVM
def foo(x: Int): Unit = {}
def foo(x: String): Unit = {println(foo(2))}
cho
error: type mismatch;
found: Int(2)
required: String
Có vẻ như bạn không thể xác định quá tải phương pháp đệ quy trong REPL. Tôi nghĩ rằng đây là một lỗi trong Scala REPL và nộp nó, nhưng nó gần như ngay lập tức đóng cửa với "wontfix: Tôi không thấy bất kỳ cách nào có thể được hỗ trợ cho ngữ nghĩa của thông dịch viên, bởi vì hai phương pháp này phải được biên dịch cùng với nhau." Ông đề nghị đặt các phương pháp trong một đối tượng kèm theo.
Có triển khai ngôn ngữ JVM hay chuyên gia Scala có thể giải thích tại sao không? Tôi có thể thấy nó sẽ là một vấn đề nếu các phương pháp gọi nhau chẳng hạn, nhưng trong trường hợp này? Hoặc nếu câu hỏi này quá lớn và bạn nghĩ rằng tôi cần kiến thức tiên quyết hơn, ai đó có bất kỳ liên kết tốt nào tới sách hoặc trang web về triển khai ngôn ngữ, đặc biệt là trên JVM không? (Tôi biết về blog của John Rose, và cuốn sách Lập trình Ngôn ngữ Pragmatics ... nhưng đó là về nó. :)
Câu trả lời tuyệt vời Daniel, cảm ơn. Ngoài ra, tôi thích blog của bạn. :) –