Quan sát mã sauTại sao tôi không thể bỏ qua "áp dụng" trong this.apply (_) trong Scala?
trait Example {
type O
def apply(o: O)
def f(o: O) = this.apply(o)
}
biên dịch tốt trong Scala. Tôi hy vọng rằng tôi có thể để lại apply
như thường lệ, viết def f(o: O) = this(o)
. Tuy nhiên, điều này dẫn đến thông báo lỗi thú vị
type mismatch; found : o.type (with underlying type Example.this.O)
required: _31.O where val _31: Example
possible cause: missing arguments for method or constructor
Bất cứ ai có thể giải thích cho tôi điều gì đang xảy ra không?
xin lỗi, tôi không suy ra được vấn đề thực tế là gì, nhưng tôi thấy quan điểm của bạn. Bạn có thể giải thích thêm? –
Đó là một lỗi với các loại trừu tượng. Lưu ý rằng ví dụ không biên dịch hoạt động nếu bạn tạo loại O cụ thể (ví dụ: "loại O = Chuỗi") hoặc nếu bạn đặt tham số kiểu thay vào đó (ví dụ: "đặc điểm Ví dụ [O]".) – extempore
bạn có biết rằng số phát hành cho lỗi này? –