Scala 定义使用算术运算的泛型函数

Scala 定义使用算术运算的泛型函数,scala,Scala,嗨,我正在尝试定义一个泛型函数isNonNeg,它使用 算术运算符如下所示: scala> def isNonNeg[A](a:A): Boolean = { if (a >= 0.0) true else false} 但是,这会产生以下错误: <console>:13: error: value >= is not a member of type parameter A def isNonNeg[A](a:A): Boolean = { if (a &

嗨,我正在尝试定义一个泛型函数isNonNeg,它使用 算术运算符如下所示:

scala> def isNonNeg[A](a:A): Boolean = { if (a >= 0.0) true else false}
但是,这会产生以下错误:

<console>:13: error: value >= is not a member of type parameter A
   def isNonNeg[A](a:A): Boolean = { if (a >= 0.0) true else false}
                                           ^
:13:错误:值>=不是类型参数a的成员
def isNonNeg[A](A:A):布尔={if(A>=0.0)true-else-false}
^

我假设问题是因为A型未知。有没有一种方法可以指定a应该是数字类型,因此>=是有效的运算符。某种类型的类型类或隐式参数会提供解决方案吗?

您可以使用
数值类型类:

如果要使用运算符,可以导入排序。隐式:

import Ordering.Implicits._
def isNonNeg [A](a: A)(implicit ev: Numeric[A]) = a >= ev.zero

您可以使用
Numeric
typeclass:

如果要使用运算符,可以导入排序。隐式:

import Ordering.Implicits._
def isNonNeg [A](a: A)(implicit ev: Numeric[A]) = a >= ev.zero