2016-12-18 2 views
-1

Ich habe eine Fall-Klasse: case class Item(id: Long, rank: Int) und ich möchte einen Heap von Objekten erstellen. Ich versuche, eine Instanz von Heap[Item] zu schaffen, aber ich habe eine Falte Funktion außer Kraft zu setzen, aber ich weiß nicht genau, was zu tun ist und deshalb bin ich an dieser Stellescalaz versucht zu verwenden Heap, wie zu umgehen falten Funktion

val heap = new Heap[Item] { 
     override def fold[B](empty: => B, nonempty: (Int, (Item, Item) => Boolean, Tree[Ranked[Item]]) => B): B = { 

     } 
    } 

stecken Was ich diese Arbeit zu tun zu tun haben, zu machen also kann ich die Heap-Sammlung verwenden; Danke.

+0

Sie _have to_ es außer Kraft setzen, aber nicht wissen, was Sie wollen, dass es zu tun ??? – Dima

+0

Ich weiß nicht, wofür falte ist, es ist das erste Mal, dass ich scalaz benutze ich konnte nicht einmal Beispielcode finden. – user3224454

+0

Verwenden Sie nicht Scalaz dann. Du brauchst es nicht. Und überschreiben Sie Funktionen nicht, wenn Sie nicht wissen, was sie sind. – Dima

Antwort

3

Sie sollten nicht direkt new Heap anrufen, um mit zu beginnen.

Definieren Sie zuerst eine implizite Order für Ihre Item s. Zum Beispiel durch Rang bestellen:

import scalaz._, Scalaz._ 

case class Item(id: Long, rank: Int) 
object Item { 
    implicit val order: Order[Item] = Order.orderBy(_.rank) 
} 

Und dann Heap s erstellen mit Hilfsmethoden aus dem Heap Begleitobjekt:

Heap.Empty[Item] 
Heap.singleton(Item(1L, 1)) 
Heap.fromData(List(Item(10L, 3), Item(20L, 2), Item(30L, 1))) 
Verwandte Themen