是否可以定义允许函数中基本算术运算的上限类型?只需使这项工作:
def a[T](t:T):T = {t*t}
答案 0 :(得分:2)
Scala中没有可用的所有数字类型的通用超类型,所以我会使用Numeric特征。它不是类型绑定,而是一个类型类,您可以在其中要求隐式Numeric[A]
在范围内可用。隐含已存在于所有Scala的数字类型的范围内。
def a[T](t: T)(implicit num: Numeric[T]): T = num.times(t, t)
或者
def a[T: Numeric](t: T): T = implicitly[Numeric[T]].times(t, t)
答案 1 :(得分:1)
Scala spire库太棒了。它提供了许多类型的数字抽象。
import spire.math._
import spire.implicits._
def negate[A: Integral](x: A) = -(42 * (x /~ 42) + x % 42)
答案 2 :(得分:0)
还找到了类似的解决方案(也允许划分)
import scala.math.Integral.Implicits._
def a[T:Integral](t:T):T = t * t / t