有一个 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 中工作?