Mam klasę abstrakcyjną, którą rozszerzam i tworzę liczne klasy przypadków. Teraz chcę skopiować instancje tych klas przypadków, zmieniając tylko pierwszy parametr, więc używam metody klasy "copy
".Case to case in Scala
Ponieważ muszę to zrobić dla wszystkich klas przypadków, które zostały rozszerzone ze wspólnej abstrakcyjnej klasy, zamiast robić to dla wszystkich, starałem się uczynić ją ogólną i uczynić abstrakcyjną klasę klasą przypadku.
Potem Scala daje mi to:
case case klasę Octopus ma przodka organizm, ale sprawa do przypadku dziedziczenia jest zabronione. Aby przezwyciężyć to ograniczenie, użyj ekstraktorów do dopasowania wzorca w węzłach innych niż liść.
Kod:
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)
To jest to, co chcę robić. Ale jeśli nie mogę wykonać metody clone
, będę musiał wykonać kopię dla obu Octopus
& Frog
.
Wszelkie sugestie, aby zmniejszyć tę szczegółowość?