У меня есть черта и два тематических объекта. Оба объекта case имеют почти идентичный метод, который использует один уникальный метод из объекта case. Я хочу извлечь идентичный метод и поместить его в черту. Я не уверен, как это сделать с уникальными методами, которые он принимает в качестве аргументов. Пример кода:
sealed trait Book {}
case object Page extends Book {
def a(): UniqueToPage = println("Page")
def shared(contents: String) = println(s"Something shared and ${a()} and $contents")
}
case object Cover extends Book {
def b(): UniqueToCover = println("Cover")
def shared(contents: String) = println(s"Something shared and ${b()} and $contents")
}
Мне кажется, что, возможно, я могу что-то сделать с преобразованием типов, но я не знаю, с чего начать. Любые предложения будут ценны. Обратите внимание, что дизайн является частью более крупного проекта, и я пытаюсь реорганизовать эту конкретную c часть.