map 上的 Scala 类型不匹配错误

标签 scala type-erasure

我在这里缺少什么? 这是我遇到的错误...

error: type mismatch; found : List[Double](in method calculateHaarWaveletI)]

required: List[scala.Double]

Console.println(list2Tuples(ls.take(n)))

这是我的代码..

    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....")
  }
}

最佳答案

calculateHaarWaveletI 定义中的类型参数 Double 正在遮蔽 scala.Double。您可以完全删除类型参数,代码应该按预期工作。看我的回答here了解更多详情。

关于 map 上的 Scala 类型不匹配错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11037870/

相关文章:

scala - 无效的 Json : No content to map due to end-of-input when using play body parser

mongodb - 如何在 MongoDB 中有效地编码 Scala 元组

java - Unit 的 Try 表达式不符合预期类型

c++ - 在 C++ 中使用 RTTI 将对象转换为正确的类型

scala - 转换 "hollow"更高种类的类型值以避免实例化

scala - 如何使线程运行得更快?

scala - Scala 列表的上三角循环习语

java - 参数化类 'ABC' 的原始使用

java - 泛型中的类型删除和代码生成

java - Java 的类型删除有什么好处?