2012-02-13 27 views
9

Có cách nào để quá tải phương pháp trong Scala có nhiều danh sách tham số không? Ví dụ. Tôi muốn làm điều này:scala - Tôi có thể quá tải các phương pháp đã kết hôn không?

def foo(a: Int)(b: Int)(c: Int): Int 

def foo(a: Int)(b: Int): Int 

tôi có thể xác định nó như thế này, nhưng cố gắng để gọi phương thức thứ hai như thế này:

foo(1)(1) 

làm cho trình biên dịch phàn nàn về "tài liệu tham khảo không rõ ràng để định nghĩa quá tải ", có vẻ hợp lý. Có cách nào để đạt được điều gì đó như thế này không? Ví dụ, tham số cuối cùng có thể được coi là tùy chọn trong một số trường hợp.

Trả lời

8

Bạn không thể sử dụng quá tải cho việc này, do việc cắt cà phê sẽ có hai phương pháp foo chỉ khác nhau trong loại trả về của chúng.

Bạn có thể sử dụng Scala 2.8's optional and named parameters để ước tính điều này, nhưng bạn phải gọi phương thức là foo(1)(1)(). Ví dụ:

object Hello { 
    def foo(a : String = "Hello,") : String = a 

    def main(args: Array[String]) { 
    println(foo() + foo(" world!")) 
    } 
} 
Các vấn đề liên quan