Como faço para criar um mapa com um parâmetro de tipo de classe

votos
0

Eu estou tentando fazer algo como isto:

import scala.swing

class componentMapper {

     val map = Map[Class[_], Componenet]()

     def apply(c: Class[_], component: Component) = map += (c -> componenet)

}

class Render extends ComponentMapper {

     def getRenderer(value: AnyRef) = map(value.getClass)

}

Isso não parece funcionar. O parâmetro de tipo I deve estar usando para a classe?

Publicado 11/05/2009 em 18:57
fonte usuário
Em outras línguas...                            


1 respostas

votos
3

Eu não sou inteiramente certo o que o problema central é, mas não é o parâmetro de tipo para a classe. Parece ser algum problema de inferência tipo estranho com "->". Os seguintes compila e funciona muito bem.

import scala.swing._

class ComponentMapper {
  var map = Map[Class[_], Component]()
  def apply(c: Class[_], component: Component) = map += ((c, component))
}

class Render extends ComponentMapper {
  def getRenderer(value: AnyRef) = map(value.getClass)
}

Note que eu tive que fazer muitas pequenas correções ao seu código até mesmo encontrar o problema que você estava falando.

Eu já entrou com um bilhete em caso na esperança de que isso é algo fixable: https://lampsvn.epfl.ch/trac/scala/ticket/1974 .

Respondeu 11/05/2009 em 21:24
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more