gpt4 book ai didi

允许对成员进行数字操作的 scala 类型签名

转载 作者:行者123 更新时间:2023-12-02 00:40:56 25 4
gpt4 key购买 nike

我有两个基本相同的案例类,除了一个具有 Int 成员,另一个具有 Double 成员。我正在尝试创建一个通用特征,可用于在任一函数上运行并允许基本数字运算的函数。但到目前为止我不知道如何使用数字或操作类型:

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上是否有类型约束/签名我可以定义为实际上只使用+- 直接对成员进行操作?

最佳答案

import scala.Numeric.Implicits._

def effective[A : Numeric](sentiment: Sentiment[A]): A = {
sentiment.positive - sentiment.negative
}

关于允许对成员进行数字操作的 scala 类型签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26692833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com