scala错误:发现和要求相同

时间:2012-01-21 09:35:09

标签: scala

以下代码来自我的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 个答案:

答案 0 :(得分:12)

它们实际上并不相同 - 这只是一个格式错误的错误消息。 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