为什么没有找到隐式,即使在一些微不足道的事情中:
class Wrapper[+A](data: Vector[A]) {
def sum[B >: A](implicit num: Numeric[B]) = data.sum
}
num
不会编译,无需手动传入data.sum
为什么没有找到隐式,即使在一些微不足道的事情中:
class Wrapper[+A](data: Vector[A]) {
def sum[B >: A](implicit num: Numeric[B]) = data.sum
}
num
不会编译,无需手动传入data.sum
Scala 规范的第 7.2 节(第 107 页)指出implicit parameters are inferred after any type arguments are inferred
. 我相信这是问题所在。
Typer 为data.sum
-推断出最具体的参数,然后在范围内A
寻找隐含的参数。Numeric[A]
他不能用它代替它,Numeric[B]
因为它Numeric
是不变的。