我需要定義一個類型類Field
如下:對類型類的一個問題
trait Field[A] {
// Additive identity
def zero: A
// Multiplicative identity
def one: A
}
的Numeric
型類還提供了方法,zero
和one
。
我希望有一個Numeric
實例可用的每個類都可以用於任何需要實例的類Field
實例。例如,以下應該工作:
def func[F: Field](f: F) = println(f)
func(2)
你能建議如何做到這一點?我嘗試以下,但它沒有工作:
scala> implicit def numericToField[N](n: Numeric[N]) = new Field[N] {
| def zero = n.zero
| def one = n.one
| }
numericToField: [N](n: Numeric[N])java.lang.Object with Field[N]
scala> def func[F: Field](f: F) = println(f)
func: [F](f: F)(implicit evidence$1: Field[F])Unit
scala> func(2)
<console>:12: error: could not find implicit value for evidence parameter of type Field[Int]
func(2)
^