scalaz 尝试使用 Heap ,如何覆盖折叠功能
scalaz trying to use Heap , how to override fold function
我有一个案例 class: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 = {
}
}
我需要做什么才能使这项工作正常进行,以便我可以使用堆集合;
谢谢
你不应该直接调用 new Heap
开始。
首先,为您的 Item
定义一个隐含的 Order
。例如按等级排序:
import scalaz._, Scalaz._
case class Item(id: Long, rank: Int)
object Item {
implicit val order: Order[Item] = Order.orderBy(_.rank)
}
然后使用 Heap
伴生对象的辅助方法创建 Heap
s:
Heap.Empty[Item]
Heap.singleton(Item(1L, 1))
Heap.fromData(List(Item(10L, 3), Item(20L, 2), Item(30L, 1)))
我有一个案例 class: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 = {
}
}
我需要做什么才能使这项工作正常进行,以便我可以使用堆集合; 谢谢
你不应该直接调用 new Heap
开始。
首先,为您的 Item
定义一个隐含的 Order
。例如按等级排序:
import scalaz._, Scalaz._
case class Item(id: Long, rank: Int)
object Item {
implicit val order: Order[Item] = Order.orderBy(_.rank)
}
然后使用 Heap
伴生对象的辅助方法创建 Heap
s:
Heap.Empty[Item]
Heap.singleton(Item(1L, 1))
Heap.fromData(List(Item(10L, 3), Item(20L, 2), Item(30L, 1)))