以下代码来自我的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)
这里发现和要求是相同的。任何人都可以帮我理解这个问题。
答案 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