Scala 定义使用算术运算的泛型函数
嗨,我正在尝试定义一个泛型函数isNonNeg,它使用 算术运算符如下所示: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 &
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