3
class Test {
    import scala.collection._

    class Parent
    class Child extends Parent

    implicit val children = mutable.Map[String, Child]()

    def createEntities[T <: Parent](names: String*) = names.foreach(createEntity[T])


    def createEntity[T <: Parent](name: String)(implicit map: mutable.Map[String, T]): Unit = map.get(name) match {
        case None => println( name + " not defined.")
        case _ =>
    }
}

コンパイラが不平を言う理由:

エラー: パラメータ マップの暗黙的な値が見つかりませんでした: scala.collection.mutable.Map[String,T] names.foreach(createEntity[T])

?

4

1 に答える 1

4

たとえば、createEntities[Parent]("A", "B")(Parentは のサブタイプであるため、可能ですParent) を呼び出す場合、暗黙的な が必要ですが、それmutable.Map[String, Parent]はありません。より正確に言うと、定義では、すでに定義されているものだけでなく、のすべてのサブタイプにmutable.Map[String, T]forを指定する必要があります。Parent

implicit def aMap[T <: Parent]: mutable.Map[String, T] = ...
于 2010-09-15T08:42:21.770 に答える