Подтип типа Union в Scala

С Dotty я могу легко выполнять следующие действия:

trait Ex {type T <: Int | Seq[Int]; def f:T}

trait Ex2 extends Ex {override type T = Seq[Int]; override def f = Seq(2)}

trait Ex3 extends Ex {override type T = Int; override def f = 2}

Как я могу сделать объединение типа без Dotty?

1 ответ

Простое решение - тип верхней границы:

trait Ex {type T >: Int with Seq[Int]; def f:T}

trait Ex2 extends Ex {override type T = Seq[Int]; override def f = Seq(2)}

trait Ex3 extends Ex {override type T = Int; override def f = 2}
Другие вопросы по тегам