Por que o exemplo não é compilado, também conhecido como (co-, contra- e in) variação?

Seguindo emessa questão, alguém pode explicar o seguinte em Scala:

class Slot[+T] (var some: T) { 
   //  DOES NOT COMPILE 
   //  "COVARIANT parameter in CONTRAVARIANT position"

}

Eu entendo a distinção entre+T eT na declaração de tipo (ele compila se eu usarT) Mas como escrever uma classe que é covariante em seu parâmetro de tipo sem recorrer à criação da coisanão parametrizado? Como posso garantir que o seguinte possa ser criado apenas com uma instância deT?

class Slot[+T] (var some: Object){    
  def get() = { some.asInstanceOf[T] }
}

EDITAR - agora temos o seguinte:

abstract class _Slot[+T, V <: T] (var some: V) {
    def getT() = { some }
}

isso é tudo de bom, mas agora tenho dois parâmetros de tipo, onde quero apenas um. Vou re-perguntar a pergunta assim:

Como posso escrever umaimutável Slot classe que écovariante em seu tipo?

EDIT 2: Duh! eu useivar e nãoval. A seguir, é o que eu queria:

class Slot[+T] (val some: T) { 
}

questionAnswers(4)

yourAnswerToTheQuestion