gpt4 book ai didi

scala - 为什么以下 scala 实验代码不起作用?

转载 作者:行者123 更新时间:2023-12-01 07:35:18 24 4
gpt4 key购买 nike

我正在尝试为数值定义一个通用的加法函数:

def add[A](x:A, y:A): A = {
x + y
}

控制台:16:错误:类型不匹配;
找一个
要求:字符串
x + y
^

编译器在提示什么?
我在谷歌上搜索过的一些东西现在对我来说不太有意义。

最佳答案

既然你定义了 A没有边界和额外信息,它可以是任何类型,并且没有任何 Scala 类型具有 +方法 - 所以这不能编译。

错误消息是编译器尝试隐式转换 x 的结果。转换为字符串(因为 String 有一个 + 方法,并且每种类型都可以使用 toString 转换为字符串),但是它失败了,因为 y不是字符串。

要为所有数字类型创建方法,您可以使用 Numeric类型:

def add[A](x:A, y:A)(implicit n: Numeric[A]): A = {
n.plus(x, y)
}

add(1, 3)
add(1.4, 3.5)

编辑 : 或等效的语法:
def add[A: Numeric](x:A, y:A): A = {
implicitly[Numeric[A]].plus(x, y)
}

关于scala - 为什么以下 scala 实验代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41217907/

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