3

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

4

0 回答 0