これをコンパイルしようとすると、次のエラーが発生します。
Btree.scala:9: エラー: パラメータの順序付けの暗黙的な値が見つかりませんでした: Ordering[K] 抽象クラス Node[K,V] extends TreeMap[K,V]
TreeMap は、私が提供する暗黙の Ordering[A] val を受け入れることになっています。おそらく、暗黙のパラメーターは、Btree(TreeMap) がインスタンス化されるオブジェクト Tester にある必要がありますか? Ordering に Comparable[K] を実装する型 K を持たせたいので、暗黙の宣言を Btree クラス内に保持することをお勧めします。わかる?
package disttree {
import scala.collection.immutable.TreeMap
class Btree[K <: Comparable[K],V](fanout:Int) {
implicit object DefaultOrder extends Ordering[K] {
def compare(k1: K, k2: K) = k1 compareTo k2
}
abstract class Node[K,V] extends TreeMap[K,V]
class InnerNode[K,V] extends Node[K,V]
class LeafNode[K,V] extends Node[K,V]
val root = new InnerNode[K,V]()
def search(n: Node[K,V], key: K): Option[(K,V)] = {
return n.find(_ == key)
}
def insert(key: K, value: V) { }
def delete(key: K) { }
}
}
import disttree._;
object Tester {
def main(args: List[String]) = {
var t = new Btree[Int, Any](2)
t.insert(1, "goodbye")
Console.println(t)
}
}