【发布时间】:2018-03-09 00:37:37
【问题描述】:
我是 Scala 新手。
我正在尝试使用二叉搜索树来实现TreeMap。
我发现我可以打印一个非空的TreeMap,但如果出现以下情况,代码将无法编译
我尝试打印Empty()(这是我定义的案例类)
错误信息是:
[error] test.scala:33:16: 类型不匹配;
[error] found : Nothing <:>
[错误] 必需:K => 有序[K]
[错误] println(Empty())
[错误] ^
[error] 发现一个错误
[error] (test:compileIncremental) 编译失败
我的源代码:
val tm:TreeMap[Int, String] = Node(Empty(), Empty(), 4, "ddd")
println(tm) // prints "4->ddd"
//println(Empty()) //This won't compile
abstract class TreeMap[K <% Ordered[K], +V] extends AbstractMap[K, V] {
//Implementation omitted.
override def +[V1 >: V](key: (K, V1)): TreeMap[K, V1] = ......
override def -(key: K): TreeMap[K, V] = ......
override def get(key: K): Option[V] = ......
override def iterator: Iterator[(K, V)] = ......
}
case class Empty[K <% Ordered[K]]() extends TreeMap[K, Nothing]
case class Node[K <% Ordered[K], +V](left: TreeMap[K, V],
right: TreeMap[K, V], key: K, value: V) extends TreeMap[K, V]
【问题讨论】:
标签: scala treemap case-class