Как собрать коллекцию в Scala? - PullRequest
0 голосов
/ 17 января 2020

У меня есть несколько типов:

abstract class TransitionalState
class State extends TransitionalState
class Parallel extends TransitionalState

и их обертки:

trait TransitionalStateWrapper[T <: TransitionalState]  {
  def state: T
}
trait StateWrapper extends TransitionalStateWrapper[State]
trait ParallelWrapper extends TransitionalStateWrapper[Parallel]

Тогда у меня есть метод:

 def convert(): List[TransitionalStateWrapper[TransitionalState]] = {
    val list: List[StateWrapper] = List(new StateWrapper {
      def state: State = new State {}
    })
    list
  }

Как я могу выгнать list до List[TransitionalStateWrapper[TransitionalState]]?

Я получил Error:(18, 5) type mismatch; found : List[StateWrapper] required: List[TransitionalStateWrapper[TransitionalState]] list

1 Ответ

3 голосов
/ 17 января 2020

Вы не можете выгружать его, потому что TransitionalStateWrapper[State] не является подтипом TransitionalStateWrapper[TransitionalState].

TransitionalStateWrapper должно быть ковариантным в параметре типа T.

trait TransitionalStateWrapper[+T <: TransitionalState]  {
  def state: T
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...