有人可以告诉我为什么,如下所示,当创建KeyVal对象时隐式转换工作,但在作为KeyVal的Map中创建键时不起作用。使用隐含的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