Hãy tưởng tượng các mục sau đây trong phạm vi:suy luận kiểu trong danh sách đối số kết hợp với setter không làm việc
object Thing {
var data: Box[String] = Empty
}
def perform[T](setter: Box[T] => Unit) {
// doesn't matter
}
Sau đây thất bại trong việc biên dịch:
perform(Thing.data = _)
Các thông báo lỗi là:
<console>:12: error: missing parameter type for expanded function ((x$1) => Thing.data = x$1)
perform(Thing.data = _)
^
<console>:12: warning: a type was inferred to be `Any`; this may indicate a programming error.
perform(Thing.data = _)
^
Khi biên dịch sau:
perform(Thing.data_=)
Tôi đã vượt qua vấn đề này bằng cách tạo ra một trừu tượng tốt hơn, nhưng sự tò mò của tôi vẫn còn.
Mọi người có thể giải thích lý do tại sao điều này không?
'T' ra khỏi hư không. Nó có phải là một tham số kiểu cho phương thức 'process' –