3
매우 일반적인 접두사 트리를 만들어 새로운 스칼라 컬렉션 프레임 워크를 배우고 싶었습니다. 키와 값은 매개 변수 여야 할뿐만 아니라 각 노드에서 사용되는 맵의 유형도 매개 변수 여야합니다.스칼라 컬렉션 입력
import collection.immutable.MapLike
class PrefixMap[+M[K1,+V1] <: Map[K1,V1] with MapLike[K1,V1,M[K1,V1]],K,+V](val content: Option[V], val children: M[K,PrefixMap[M,K,V]])
extends Map[Iterable[K],V]
with MapLike[Iterable[K],V,PrefixMap[M,K,V]] {
override def empty: PrefixMap[M,K,V] = new PrefixMap[M,K,V](None, children.empty)
}
그러나 이것은 컴파일되지 않습니다 : 그래서 나는이 시도
PrefixMap.scala:19: error: type mismatch;
found : scala.collection.immutable.Map[K,PrefixMap[M,K,V]]
required: M[K,PrefixMap[M,K,V]]
override def empty: PrefixMap[M,K,V] = new PrefixMap[M,K,V](None, children.empty)
^
one error found
이 나를 혼란. 설명서에서 MapLike에 "This"를 반환하는 빈이 있음을 알 수 있습니다. 그래서, 아이들은 M [K, PrefixMap [M, K, V]] 타입이기 때문에, children.empty는 그 타입이어야합니다.
무엇이 잘못 되었습니까? 수선 할 수 있습니까?