У меня есть первый trait
, подобный этому:
trait FirstTrait[U] {
val myVal: U
}
И еще один следующий:
trait SecondTrait[T <: firstTrait[U],U]
Для реализации я делаю:
case class FirstImpl(myVal: MyType) extends FirstTrait[MyType]
object SecondImpl extends SecondTrait[FirstImpl,MyType]
Есть ли лучший способ сделать то же самое, я хотел бы упростить мою реализацию второй черты, если это возможно:
object SecondImpl extends SecondTrait[FirstImpl]
РЕДАКТИРОВАТЬ
Я использую после того, как оба типа в функции:
def func[T <: FirstTrait[U],U](myVal: T): U
Когда я использую экзистенциальный тип, я должен явные типы, или я получаю "inferred type arguments [FirstImpl,Nothing] do not conform to method func"
ошибку.
Так что это как мне реализовать функцию:
val myVal : MyType = MyType()
func[FirstImpl,MyType](FirstImpl(myVal))
Можно что-нибудь упростить?