您好我正在尝试定义一个使用an的泛型函数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}
^
我假设问题是因为A类未知。有没有办法指定A应该是数字类型因此&gt; =是一个有效的运算符。某种类型类或隐式参数会提供解决方案吗?
答案 0 :(得分:2)
您可以使用Numeric
类型类:Something Better than IDs for Identifying Elements in Selenium Tests
def isNonNeg [A](a: A)(implicit ev: Numeric[A]) = ev.gteq(a, ev.zero)
如果要使用运算符,可以导入Ordering.Implicits:
import Ordering.Implicits._
def isNonNeg [A](a: A)(implicit ev: Numeric[A]) = a >= ev.zero