Đây là cách đơn giản hóa những gì tôi gặp phải. Đây biên dịch:Ngụ ý và lệnh khai báo
trait A { implicit val x = 1 }
trait B extends A { val y = implicitly[Int] }
Trong khi điều này không (không thể tìm thấy giá trị tiềm ẩn):
trait B extends A { val y = implicitly[Int] }
trait A { implicit val x = 1 }
tôi đã cố gắng để làm cho ý định của tôi rõ ràng bằng cách xác định một tự loại: trait A { this: B => ... }
, nhưng không có kết quả .
Làm cách nào để giải quyết loại phụ thuộc này mà không phải lo lắng về cách mã của tôi được đặt ra?
Điều gì về các đối tượng tiềm ẩn? Bạn có thể chỉ cho tôi các phần của thông số kỹ thuật liên quan đến độ phân giải của implicits? 'đặc điểm X; đặc điểm B mở rộng A {val y = ngầm [X]}; trait A {đối tượng ẩn x mở rộng X} ' – elbowich
Xin lỗi vì câu trả lời trễ. Sau một cái nhìn cursory hơn trong spec, tôi không thể tìm thấy các quy tắc. Tuy nhiên, nó được nhắc đến trong [báo cáo lỗi này] (https://issues.scala-lang.org/browse/SI-801), có vẻ như đó là những gì thực hiện, nhưng nó vẫn chưa được đưa ra cho spec. Tôi không hiểu tại sao nó không nên làm việc với một đối tượng tiềm ẩn. –