2015-05-19 78 views
1

我想添加一個新的隱式類型對於已經具有隱式Fractional或Integral類型類型的每個類型T都可以分割。來自其他類型類的隱式def類型

我寫的代碼無法編譯:

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)) 
} 

我收到的錯誤是:

找不到參數格隱含的價值: core.common.Divisible [雙]

如果另一方面我將隱式def移動到App中,它會進行編譯。

如何幫助編譯器在Divisible的伴隨對象中查找隱式def?

編輯: 此問題有一個錯誤。

回答

3

更改其中一個隱式函數的名稱,以使它們不會同時被命名:fractionalDivisible

+1

也許解釋*爲什麼*會產生差異。 –

+0

我不知道:( –