Я хотел бы иметь метод, который возвращает класс определенного типа, но я хочу, чтобы метод вел себя по-разному в зависимости от того, расширяет ли класс конкретный признак следующим образом:
case class ClassA extends TraitA
case class ClassB extends TraitB
case class ClassC extends TraitA
...
def myfunc[T]():T = {
T match {
case TraitA => // return new T in a particular way
case TraitB => // ditto
}
}
Возможно ли это, или я не ошибаюсь?
Спасибо