首页 > 解决方案 > 如何在 Scala 中编写通用数值函数?

问题描述

我知道这个问题可能会被回答很多次,但是我找不到可以解决我问题的帖子。我的问题是我想写一个通用函数,可以接受IntDouble或者BigDecimal进行计算。

def foo[T: Numeric](returns: Seq[T])(implicit ev: T => Ordered[T]): Seq[T]= {
    returns.filter(_ >= 0)
}

但是我收到了类型匹配错误,因为0Int. 如果有任何方法可以使它适用于任何Numeric类型。

标签: scala

解决方案


尝试这个。

def foo[T](returns: Seq[T])(implicit N: Numeric[T]): Seq[T] = {
  import N._
  returns.filter(_ >= N.zero)
}

scaladoc你的朋友。


推荐阅读