有一个scala工作表的例子,它在Eclipse中编译和执行但不能在Intellij Idea中编译(版本12.0.6与scala插件0.22.302)。
object trees {
trait Tree
case class Node(left: Tree, right: Tree) extends Tree
case class Leaf(value: Int) extends Tree
def treeSum(t: Tree): Int = t match {
case n: Node => nodeSum(n)
case l: Leaf => leafSum(l)
}
def nodeSum(n: Node): Int = {
treeSum(n.left) + treeSum(n.right)
}
def leafSum(l: Leaf): Int = {
l.value
}
val tree = new Node(Leaf(5), Leaf(1))
treeSum(tree)
}
Idea的问题是nodeSum是在使用后定义的。
> <console>:13: error: not found: value nodeSum
case n: Node => nodeSum(n)
这是正确的行为吗?我知道我可以将nodeSum和leafSum主体直接内联到匹配体。但是,还有其他方法可以在Idea中绕过这个吗?为什么它在Eclipse中有效?