Trong khi làm việc này như mong đợi:Mixin trong một đặc điểm vào một đối tượng gói hai lần
trait A
trait B extends A
object C extends A with B
Lợi suất sau illegal cyclic reference involving trait B
:
package cyclictest {
trait A
trait B extends A
}
package object cyclictest extends A with B
cứu xem lỗi gì xảy ra ở đó?
Cố gắng kế thừa từ B trước tiên. Nó có thể là trình biên dịch không tuyến tính hóa các lớp cơ sở của đối tượng. – Dirk
@Dirk, đúng vậy, quá dễ dàng để nghĩ về nó ngay từ đầu. Tuy nhiên tôi vẫn tự hỏi nếu nó có mục đích hay một loại lỗi nào đó ?! –
Tôi nghĩ định nghĩa của bạn về một đối tượng gói không thể mở rộng các đặc điểm được định nghĩa trong chính gói đó. Thông số scala nói: "_Các đối tượng gói không nên xác định một thành viên có cùng tên với một trong các đối tượng hoặc các lớp cấp cao nhất được nêu trong gói p. Nếu có tên, hành vi của chương trình hiện chưa được xác định. _ "Tôi nghĩ rằng những gì bạn đang làm để xác định lại các đặc điểm A và B –