ошибка scala: найдены и требуются одинаковые - PullRequest
10 голосов
/ 21 января 2012

Следующий код из моего REPL:

scala> words.zipWithIndex.filter((x:java.lang.String,index:Int)=>index%2==0)
<console>:9: error: type mismatch;
found : (java.lang.String, Int) => Boolean
required: (java.lang.String, Int) => Boolean
words.zipWithIndex.filter((x:java.lang.String,index:Int)=>index%2==0)

Здесь найдены и обязательны одинаковые. Может ли кто-нибудь помочь мне понять проблему.

1 Ответ

12 голосов
/ 21 января 2012

Они на самом деле не одинаковы - это просто плохо отформатированное сообщение об ошибке.Scala 2.10 будет иметь лучшее сообщение об ошибке.

По сути, один - кортеж, а другой - список аргументов с двумя параметрами.В частности:

words.zipWithIndex // Creates a tuple

(x: String, index: Int) => index % 2 == 0 // is a function with two parameters

Вы можете исправить это двумя способами:

filter((t: (String, Index)) => t._2 % 2 == 0) // use a tuple as parameter
filter { case (x: String, index: Int) => index % 2 == 0 } // use pattern matching
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...