2017-03-11 7 views
0

Scala Courseraコースで関数型プログラミングを行っています。私は木をコーディングするハフマンについての演習に取り組んでいます。スカラコンストラクタを使用してマップする方法

はここハフマン木

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 

を表すコードだと、我々はそれがList[(Char,Int)]をとる関数を実装するはずだと私のコードここList[Leaf]

を返します:

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

をしかし、私はこのエラーが発生している

enter image description here

このコードで何が問題なのですか?あなたは、あなたが一致するタプルケースを提供する必要が反復としてそれらを解凍したい場合は、タプルのリストをマッピングしているので

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

答えて

2

これは、あなたが探している構文です。

また、このようなあなたのタプルを解凍できます。

def makeOrderedLeafList(freqs: List[(Char, Int)]): List[Leaf] = freqs.map(tuple => { 
    val (c, i) = tuple 
    Leaf(c, i) 
}) 
関連する問題