我一直收到这个错误:
[error] found : (scala.xml.NodeSeq, Int) => scala.xml.NodeSeq
[error] required: (scala.xml.NodeSeq, Int) => scala.collection.GenTraversableOnce[?]
[error] { answers.zipWithIndex.flatMap(answerElem) }
[error] ^
[error] one error found
answers
只是List[NodeSeq]
而answerElem
只是检查索引并在元素上设置属性。正如您所看到的,其参数是正确的类型,而NodeSeq
表示它扩展了GenTraversableOnce
。
是否有提示我必须帮助它编译?
托德答案 0 :(得分:2)
您可以确认您的功能是Function2[NodeSeq, Int, GenTraversableOnce[_]]
还是Function1[(NodeSeq, Int), GenTraversableOnce[_]]
?如果它是前者,那可能是你的问题,因为zipWithIndex
会产生元组。答案就是:
answers.zipWithIndex.flatMap(answerElem.tupled)
我做了一个带有非故障功能的实验,并重现了类似你的问题,并用上面的方法修复了它。虽然不是最有用的错误消息...
答案 1 :(得分:1)
我怀疑这是因为编译器试图解析两个隐式CanBuildFrom ,并且找不到两者的合适对。分离zipWithIndex和flatMap似乎允许编译器为每个正确解析CanBuildFrom。
{ val zip = answers.zipWithIndex; zip.flatMap(answerElem) }