澄清Scala函数

时间:2017-07-07 07:42:44

标签: scala

我正在尝试执行此功能

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)

Isn&t; t整数是数字的子类型?请解释我是否遗漏了什么。

1 个答案:

答案 0 :(得分:5)

看起来您正在使用Flatpickr.defaultConfig.parseDate = function(str) { return moment.utc(str, "DD.MM.YYYY").toDate(); } 。不幸的是,scala中的数字类型不会从此类继承(供参考查看java.lang.Number定义 - 就像它直接从Int - http://www.scala-lang.org/api/2.12.0/scala/Int.html继承的其他scala的数字一样 - 它根本就不在他们的等级。您要使用的是隐式AnyVal类型类来转换您的数字。

Numeric

有关详细信息,请参阅此问题 - Scala equivalent of Java's Number