1
どういうわけか、私はSortedMapを正しく実装できないようです。ここでは、最小限の(非)作業例です::ScalaでのカスタムSortedMapの実装
class MyMap[A](t: Map[Long, A]) extends SortedMap[Long, A] {
protected val internalMap = TreeMap(t.toArray: _*)
def -(key: Long) = MyMap(internalMap - key)
def get(key: Long) = internalMap.get(key)
def rangeImpl(from: Option[Long], until: Option[Long]) = TreeMap(internalMap.rangeImpl(from, until))
def iterator = internalMap.iterator
def ordering = internalMap.ordering
}
しかし、私はMyMap
コンストラクタに渡すものは何でも、呼び出し、例えば、そのsize
は、常に0
補遺を返します。私はちょうど新しいプロジェクトにコードをコピーして貼り付けました。そして、それは8- \と働いていました。それを有効にするために質問を変更させてください。これは正しい方法ですか?SortedMap
?それをコンパイルするために不足しているメソッドのカップルを追加した後、あなたのコードは私のためにうまく働いた
あなたの付録に質問で答える: 'TreeMap'は' SortedMap'を実装しているので、なぜそれを 'MyMap'でラップする必要がありますか? 'TreeMap'を直接使うのではないのですか? (私たちは 'scala.collection.immutable.TreeMap'について話しています。) –
@Chris:これは最小の実例でした:-)実生活では、自分自身を再実装したい異なる種類のSortedMapの関数 –
そして、はい、私たちは 'scala.collection.immutable.SortedMap'について話しています。 –