Может кто-нибудь сказать мне, почему, как показано ниже, неявное преобразование работает при простом создании объекта KeyVal, но не работает при создании ключа на карте, которая является KeyVal.Использование implicits для ключей карты scala
спасибо.
object o {
case class KeyVal(i: Int)
object KeyVal {
implicit def strToKeyVal(s:String) = KeyVal(s.toInt)
}
}
import o._
val x : KeyVal = "1" // Works fine to create a KeyVal
val x : Map[KeyVal, String] = Map("1" -> "One") // Type Mismatch: found (String, String), wants (KeyVal, String)
Спасибо. Я предполагаю, что он должен знать, что только первый член Tuple должен быть преобразован слишком много. Однако я не думал, что это было необоснованно, поскольку он должен знать, что первым членом Tuple был KeyVal, поскольку значение было Map [KeyVal, String] – user1922871