문제

Why isn't the implicit not found, even in something as trivial as:

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

won't compile, without resorting to manually passing in num to data.sum

도움이 되었습니까?

해결책

§7.2 of Scala specification (page 107) states that implicit parameters are inferred after any type arguments are inferred. I believe this is the problem.

Typer infers most specific parameter for data.sum - A, and then looks for implicit Numeric[A] in scope. He can't substitute it with Numeric[B] because Numeric is invariant.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top