Trong Scala chúng tôi sử dụng kết hợp trong như thế này:Có phải loại "A có B" không?
class C extends A with B
Tôi hiểu lời tuyên bố này như C
là một lớp con của A with B
. Điều này có đúng không? Hoặc C
chỉ là lớp con của cả hai A
và B
(Tôi không nghĩ rằng nó có thể trên JVM không hỗ trợ đa thừa kế)?
Nếu A with B
là loại, tại sao dòng này không hoạt động?
classOf[A with B]
Một lý do tại sao tôi xem xét A with B
một loại là một thực tế rằng nó có thể được sử dụng trong mô hình phù hợp:
val c = new C
val u = c match { case a: A with B => 1 } // 1