来自其他类型类的隐式def type类



我想为每个已经有隐式分数或积分类型类的类型T添加一个新的隐式类型类Divisible

我写的代码不能编译:

object Divisible {
    implicit def fractionalDivisible[T](implicit frac: Fractional[T]): Divisible[T] = new Divisible[T] {
        override def div(x: T, y: T): T = frac.div(x, y)
    }
    implicit def fractionalDivisible[T](implicit integral: Integral[T]): Divisible[T]  = new Divisible[T] {
        override def div(x: T, y: T): T = integral.quot(x, y)
    }
}
trait Divisible[T] {
    def div(x: T, y: T): T
}
object Example extends App{
    def foo[T](x: T, y: T)(implicit div: Divisible[T]) = div.div(x, y)
    println(foo(1.0, 2.0))
}

我收到的错误是:

无法找到参数div的隐式值:core.common.Divisible(双)

另一方面,如果我将隐式def移动到应用程序中,它确实可以编译。

如何帮助编译器找到可分割的伴侣对象的隐式定义?

编辑:这个问题有一个错误

更改其中一个隐式函数的名称,使它们不同时命名:

相关内容

  • 没有找到相关文章

最新更新