0

以下のコードは正常にコンパイルされていますが、実行時にエラーが返されます。Scala の Traits について何か間違っていると思います。この問題は、アプリケーションで addItem 関数が呼び出されたときに発生します。私は自分が間違っていることに興味があります。コードの後に​​エラー メッセージが表示されます。

trait Heap {
  def addItem(item: Int): Heap
}

case class heap(n: Int,
                l: Heap,
                r: Heap ) extends Heap {
  val node: Int = n
  val left: Heap = l
  val right: Heap = r

  def addItem(item: Int): Heap = {
    if (item < node) {
      new heap(item,r.addItem(node),l)
    } else {
      new heap(node,l,r.addItem(node))
    }
  }
}

case class leaf extends Heap {
  def addItem(item: Int): Heap = {
    new heap(item,new leaf,new leaf)
  }
} 




object test extends Application {
  var a = new leaf
  a.addItem(5);
}


Exception in thread "main" java.lang.NoClassDefFoundError: Heap (wrong name: heap)
4

1 に答える 1

1

ヒープ (トレイト) とヒープ (クラス) の命名規則に何か問題があることがわかりました。JVM は、特性ヒープがクラス ヒープと同じ名前になるように、名前をまとめてコンパイルしていると思います。名前を heap から h に変更すると問題が解決しました。

于 2012-12-24T05:31:17.583 に答える