映射上的Scala类型不匹配错误
我错过了什么? 这是我得到的错误 错误:类型不匹配;找到:列表[双精度](在方法中) 计算Haarti)] 必需:列表[scala.Double] Console.println(list2Tuples(ls.take(n))) 这是我的密码映射上的Scala类型不匹配错误,scala,type-erasure,Scala,Type Erasure,我错过了什么? 这是我得到的错误 错误:类型不匹配;找到:列表[双精度](在方法中) 计算Haarti)] 必需:列表[scala.Double] Console.println(list2Tuples(ls.take(n))) 这是我的密码 object HaarWavelet { def calculateHaarWavelet(ls: List[Double]): List[Double] = { if (ls.length % 2 != 0) throw new R
object HaarWavelet {
def calculateHaarWavelet(ls: List[Double]): List[Double] = {
if (ls.length % 2 != 0) throw new RuntimeException("Need even number of elements to calculate HaarWavelet")
calculateHaarWaveletI(ls, ls.length)
def calculateHaarWaveletI[Double](ls: List[Double], n: Int): List[Double] = {
Console.println(list2Tuples(ls.take(n)))
null
}
null
}
def processTuple(x: (Double, Double)): (Double, Double) = {
val f = (x._1 + x._2) / 2
(f, x._1 - f)
}
def list2Tuples(ls: List[Double]): List[(Double, Double)] = {
if (ls.isEmpty) return List()
(ls.head, ls.tail) match {
case (_, Nil) => List()
case (x, y) => List((x, y.head)) ::: list2Tuples(y.tail)
}
}
def main(args: Array[String]) {
Console.println("Starting....")
Console.println(calculateHaarWavelet(List(8.0, 4.0)))
Console.println("Done....")
}
}
您的类型参数
Double
在calculatehaarwaveletti
的定义中是阴影scala.Double
。您可以完全删除类型参数,代码应该可以按预期工作。有关详细信息,请参阅我的答案。谢谢。我最初在所有方法中添加了一个类型参数,然后删除了它们,这一个不知怎么地逃掉了:)