gpt4 book ai didi

scala - Scala函数的澄清

转载 作者:行者123 更新时间:2023-12-02 09:18:14 27 4
gpt4 key购买 nike

我正在尝试执行这个函数

def sumofdouble[T <:Number] (as:T*): Double = as.foldLeft(0d)(_ + _.doubleValue)

如果我尝试像这样使用这个函数,

sumofdouble(1,2)

我收到此错误

<console>:13: error: inferred type arguments [Int] do not conform to method sumofdouble's type parameter bounds [T <: Number]
sumofdouble(1,2)

Integer 不是 Number 的子类型吗?如果我遗漏了什么,请解释一下。

最佳答案

看起来您正在使用java.lang.Number。不幸的是,scala 中的数字类型不从此类继承(作为引用,请查看 Int 定义 - 与其他 scala 的数字一样,它直接从 AnyVal 继承 - http://www.scala-lang.org/api/2.12.0/scala/Int.html ) - 它根本不属于他们的等级制度。您想要使用隐式 Numeric 类型类来转换您的数字。

def foo[T](as: T*)(隐式 n: Numeric[T]) = as.foldLeft(0d)(_ + n.toDouble(_))

请参阅此问题以获取更多信息 - Scala equivalent of Java's Number .

关于scala - Scala函数的澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44965247/

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