我有两个基本相同的案例类,除了一个有 Int 和另一个 Double 成员。我正在尝试创建一个通用特征,可用于在其中任何一个上运行并允许基本数字运算的函数。但到目前为止,我无法弄清楚如何使用 Numeric 或 Ops 类型:
trait Sentiment[A] {
def positive: A
def negative: A
}
case class IntSentiment(positive: Int, negative: Int) extends Sentiment[Int]
我想提出一个函数约束,以便我可以对成员执行数字操作,类似于:
def effective[A](sentiment: Sentiment[A]): A = {
sentiment.positive - sentiment.negative
}
这不起作用,我想我需要以Numeric
某种方式调用类型类,但我最接近的是:
def effective[A](sentiment: Sentiment[A])(implicit num: Numeric[A]): A = {
num.minus(sentiment.positive,sentiment.negative)
}
是否有类型约束/签名Sentiment
和/或effective
我可以定义为直接使用+
和-
操作成员?