2012-06-14 2 views
1

Что мне здесь не хватает? Это ошибка я получаю ...Ошибка несоответствия типа Scala на карте

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

ответ

4

Ваш параметр Double типа в определении calculateHaarWaveletI является слежка scala.Double. Вы можете просто удалить параметр типа в целом, и код должен работать должным образом. См. Мой ответ here для более подробной информации.

+0

Спасибо. Я сначала добавил параметр типа ко всем методам, а затем удалил их, этот как-то ушел :) –

Смежные вопросы