0

私はこのようなことをしようとしています:

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)

}

これはうまくいかないようです。クラスにはどのタイプのパラメータを使用する必要がありますか?

4

1 に答える 1

4

コアの問題が何であるかは完全にはわかりませんが、クラスの型パラメーターではありません。「->」を使用した奇妙な型推論の問題のようです。以下はコンパイルして問題なく動作します。

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)
}

あなたが話している問題を見つけるために、私はあなたのコードに多くの小さな修正を加えなければならなかったことに注意してください。

何か修正可能なものになることを期待して、念のためにチケットを提出しました:https ://lampsvn.epfl.ch/trac/scala/ticket/1974 。

于 2009-05-11T20:24:42.567 に答える