我有一个案例类:case class Item(id: Long, rank: Int)
我想创建一个Item对象堆。我尝试创建Heap[Item]
的实例,但我必须覆盖折叠函数,但我不知道该做什么,因此我陷入困境
val heap = new Heap[Item] {
override def fold[B](empty: => B, nonempty: (Int, (Item, Item) => Boolean, Tree[Ranked[Item]]) => B): B = {
}
}
我需要做些什么来完成这项工作,以便我可以使用堆集合; 感谢。
答案 0 :(得分:3)
您不应该直接致电new Heap
开始。
首先,为Order
定义隐式Item
。例如,按等级排序:
import scalaz._, Scalaz._
case class Item(id: Long, rank: Int)
object Item {
implicit val order: Order[Item] = Order.orderBy(_.rank)
}
然后使用Heap
随播广告对象中的辅助方法创建Heap
:
Heap.Empty[Item]
Heap.singleton(Item(1L, 1))
Heap.fromData(List(Item(10L, 3), Item(20L, 2), Item(30L, 1)))