【发布时间】:2011-07-18 06:13:56
【问题描述】:
有人能快速解释一下为什么隐式转换在这些情况下不起作用吗?谢谢。
scala> implicit def strTwoInt (s: String):Int = s.toCharArray.map{_.asDigit}.sum
strTwoInt: (s: String)Int
scala> List[Int]("1","2","3") sum
res3: Int = 6
scala> List("1","2","3") sum
<console>:9: error: could not find implicit value for parameter num: Numeric[java.lang.String]
List("1","2","3") sum
scala> val a = List("1","2","3")
scala> a.foldLeft(0)((i:Int, j:Int) => i+j)
<console>:10: error: type mismatch;
found : (Int, Int) => Int
required: (Int, java.lang.String) => Int
【问题讨论】:
-
你能不能更具体一点,在你的隐式转换中你想做什么
sum和List[Int]("1","2","3")之后的sum? -
@Lutz 你是指
def sum [B >: A] (implicit num: Numeric[B]): B形式的sum?也许吧,但我不明白它是如何工作的 -
抱歉不够清楚。您的示例的预期结果是什么?