2017-03-11 3 views
0

Ich arbeite an der funktionalen Programmierung in Scala Coursera Kurs; und ich arbeite an der Übung über Huffman-codierende Bäume.Wie man mit scala Konstruktor abbildet

Hier ist der Code, der die Huffman-Baum

sealed abstract class CodeTree 
case class Fork(left: CodeTree, right: CodeTree, chars: List[Char], weight: Int) extends CodeTree 
case class Leaf(char: Char, weight: Int) extends CodeTree 

Und wir sollen es eine Funktion implementieren, die eine List[(Char,Int)] nimmt und gibt ein List[Leaf]

Hier ist mein Code:

def makeOrderedLeafList(freqs: List[(Char, Int)]): List[Leaf] = freqs.map(
    (c, i) => Leaf(c, i) 
) 

Aber ich bekomme diesen Fehler

enter image description here

Kann mir jemand erklären, was mit diesem Code nicht stimmt?

Antwort

2

Dies ist die Syntax, die Sie für Ihre Suche:

def makeOrderedLeafList(freqs: List[(Char, Int)]): List[Leaf] = freqs.map { 
    case (c, i) => Leaf(c, i) 
} 

Da Sie eine Liste von Tupeln zuordnen, wenn Sie sie entpacken möchten, wie Sie durchlaufen Sie eine passende Tupel Fall zur Verfügung stellen müssen.

Sie können auch Ihre Tupel wie folgt auspacken:

def makeOrderedLeafList(freqs: List[(Char, Int)]): List[Leaf] = freqs.map(tuple => { 
    val (c, i) = tuple 
    Leaf(c, i) 
}) 
Verwandte Themen