Tôi có một lớp trừu tượng mà tôi mở rộng và tạo ra nhiều lớp chữ hoa chữ thường. Bây giờ tôi muốn sao chép các cá thể của các trường hợp này chỉ thay đổi tham số đầu tiên, vì vậy tôi sử dụng phương thức 'copy
' của lớp vỏ.Trường hợp thừa kế trường hợp trong Scala
Vì tôi phải làm điều này cho tất cả các trường hợp đã được mở rộng từ lớp trừu tượng phổ biến, thay vì làm nó cho tất cả, tôi đã cố gắng làm cho nó chung và tạo lớp trừu tượng thành một lớp chữ.
Sau đó Scala mang lại cho tôi thế này: class
trường hợp Octopus có trường hợp tổ tiên Sinh vật, nhưng trường hợp-to-trường hợp thừa kế đều bị cấm. Để khắc phục hạn chế này, hãy sử dụng các trình giải nén để khớp mẫu trên các nút không phải lá.
Code:
abstract class Organism(legs: Int)
case class Octopus(override val legs: Int, weight: Double, ...)
case class Frog(override val legs: Int, ...)
def clone(o: Organism) = o.copy(legs = -1)
Đây là những gì tôi muốn làm. Nhưng nếu tôi không thể thực hiện phương pháp clone
, thì tôi sẽ phải sao chép cho cả hai Octopus
& Frog
.
Bất kỳ đề xuất nào, để giảm độ dài này?