为什么会出现此类错误?

时间:2013-02-26 09:34:59

标签: scala

使用隐式返回类型查看以下函数定义:

scala> def getIn(nodes:NodeSeq, path:String) = {
     | nodes map {node => node \ path}
     | }
getIn: (nodes: scala.xml.NodeSeq, path: String)scala.collection.immutable.Seq[scala.xml.NodeSeq]

但是,如果明确定义了具有相同返回类型的函数,则会发生错误:

scala> def getIn(nodes:NodeSeq, path:String) = Seq[NodeSeq] {
     | nodes map {node => node \ path}
     | }
<console>:9: error: type mismatch;
 found   : scala.collection.immutable.Seq[scala.xml.NodeSeq]
 required: scala.xml.NodeSeq
       nodes map {node => node \ path}

我无法理解错误发生的原因。请帮帮我。

1 个答案:

答案 0 :(得分:4)

在第二种情况下,您没有正确定义返回类型。你需要

def getIn(nodes:NodeSeq, path:String) : Seq[NodeSeq] = { ...