У меня есть два класса case, которые в основном идентичны, за исключением того, что у одного есть Int и другие двойные члены. Я пытаюсь создать общую черту, которую я могу использовать для функций, работающих на обоих, и позволяя выполнять основные числовые операции. Но до сих пор я не могу понять, как использовать либо числовые или Ops типов:подпись типа scala, позволяющая числовым операциям на членах
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
Я могу определить, на самом деле просто использовать +
и -
ops на членах напрямую?
Кстати, общие цифры в простой Scala в коробке, так что не все так быстро. Возможно, они вам не нужны. Если да, проверьте Шпиль. –
Spire выглядит интересным. Спасибо за указатель –