неявное значение не найдено - PullRequest
3 голосов
/ 15 сентября 2010
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 [Т])

1 Ответ

4 голосов
/ 15 сентября 2010

Если вы звоните, например, createEntities[Parent]("A", "B") (что вы можете, потому что Parent является подтипом Parent), ему нужен неявный mutable.Map[String, Parent], а его нет. Если быть более точным, ваши определения требуют, чтобы вы указали mutable.Map[String, T] для каждого подтипа Parent, а не только те, которые уже определены:

implicit def aMap[T <: Parent]: mutable.Map[String, T] = ...
...