Tôi có một ứng dụng dựa trên Squeryl. Tôi định nghĩa các mô hình của mình là các lớp chữ hoa, chủ yếu là vì tôi thấy thuận tiện để có các phương thức sao chép.thừa kế lớp vỏ Scala
Tôi có hai mô hình có liên quan chặt chẽ. Các trường là giống nhau, nhiều thao tác là chung, và chúng được lưu trữ trong cùng một bảng DB. Nhưng có một số hành vi chỉ có ý nghĩa trong một trong hai trường hợp, hoặc có ý nghĩa trong cả hai trường hợp nhưng khác nhau.
Cho đến bây giờ tôi chỉ sử dụng một trường hợp đơn, với cờ phân biệt loại mô hình và tất cả các phương pháp khác nhau dựa trên loại mô hình bắt đầu bằng if. Điều này gây phiền toái và không khá an toàn.
Điều tôi muốn làm là yếu tố hành vi và trường phổ biến trong lớp trường hợp tổ tiên và có hai mô hình thực tế kế thừa từ nó. Nhưng, theo như tôi hiểu, kế thừa từ các trường hợp lớp học được cau mày khi ở Scala, và thậm chí bị cấm nếu lớp con là chính nó là một trường hợp lớp (không phải trường hợp của tôi).
What are the problems and pitfalls I should be aware in inheriting from a case class? Does it make sense in my case to do so?
Bạn không thể kế thừa từ một lớp không phải là trường hợp, hay mở rộng một đặc điểm chung? – Eduardo
Tôi không chắc chắn. Các trường được xác định trong tổ tiên. Tôi muốn nhận được các phương pháp sao chép, bình đẳng và vân vân dựa trên những lĩnh vực đó. Nếu tôi khai báo cha mẹ như là một lớp trừu tượng và trẻ em như là một lớp trường hợp, nó sẽ đưa vào tài khoản các thông số được xác định trên phụ huynh? – Andrea
Tôi nghĩ rằng không, bạn phải xác định đạo cụ trong cả hai phụ huynh trừu tượng (hoặc đặc điểm) và trường hợp mục tiêu lớp. Cuối cùng, rất nhiều 'boilerplate, nhưng gõ an toàn ít nhất – virtualeyes