2

为什么没有找到隐式,即使在一些微不足道的事情中:

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

num不会编译,无需手动传入data.sum

4

1 回答 1

2

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

Typer 为data.sum-推断出最具体的参数,然后在范围内A寻找隐含的参数。Numeric[A]他不能用它代替它,Numeric[B]因为它Numeric是不变的。

于 2012-08-14T08:19:23.670 回答