为什么没有找到琐碎的隐含?

时间:2012-08-14 06:58:38

标签: scala compiler-errors implicits

为什么不隐含未找到,即使在像以下那样微不足道的事情中:

class Wrapper[+A](data: Vector[A]) {
  def sum[B >: A](implicit num: Numeric[B]) = data.sum
}

无法编译,无需手动将num传递给data.sum

1 个答案:

答案 0 :(得分:2)

Scala specification(第107页)的第7.2节implicit parameters are inferred after any type arguments are inferred指出data.sum。我相信这就是问题所在。

Typer推断A - Numeric[A]的最具体参数,然后在范围内查找隐式Numeric[B]。他无法用Numeric替换它,因为{{1}}是不变的。