Eclipse でコンパイルおよび実行されるが、Intellij Idea (バージョン 12.0.6、scala プラグイン 0.22.302) ではコンパイルされない scala ワークシートの例があります。
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 の本体を一致する本体にインライン化できることはわかっています。しかし、アイデアでこれをバイパスする他のアプローチはありますか? そして、なぜEclipseで動作するのですか?