2014-08-27 4 views
0

Я пытаюсь фильтровать заархивированные массивы, используя вложенную функцию, но я получил ошибку компиляции, связанную с типом переменного «mergedRow»Ошибки компиляции при фильтрации молний массивов, используя вложенную функцию

Вот мой пример:

ошибка ScalaVersion = 2.10.4

val arrayOne : Seq[IndexedSeq[Double]] = Seq.empty 
val arrayTow : Seq[IndexedSeq[String]] = Seq.empty 

(this.arrayOne , this.arrayTow).zipped.filter{ 
    mergedRow : (IndexedSeq[String], IndexedSeq[Double])=> 

    // some processing 
    true 
} 

компиляция:

Error:(130, 51) type mismatch; 
found : ((IndexedSeq[String], IndexedSeq[Double])) => Boolean 
required: (IndexedSeq[String], IndexedSeq[Double]) => Boolean 
     mergedRow : (IndexedSeq[String], IndexedSeq[Double])=> 
              ^

Я не знаю происхождения этой ошибки, поэтому каждая помощь будет оценена.

Cheers.

ответ

1

Вам не хватает case. Это должно выглядеть следующим образом:

(arrayOne , arrayTwo).zipped.filter{ 
    case (one, two) => 
     // filter predicate 
} 

Аргументы типа будут производить бесплодного типа тест предупреждение о, поэтому я опустил их. Вы можете заменить case (one, two) на case mergedRow, если вы хотите, но операции на one и two намного чище, чем mergedRow._1 и mergedRow._2.

+0

Действительно, использование футляра (один, буксировка) намного чище, чем mergedRow._1 и mergedRow._2. Спасибо за помощь :). –