我正在开发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)
)
但是我收到了这个错误
任何人都可以向我解释这段代码有什么问题吗?
答案 0 :(得分:2)
这是您正在寻找的语法:
def makeOrderedLeafList(freqs: List[(Char, Int)]): List[Leaf] = freqs.map {
case (c, i) => Leaf(c, i)
}
由于您要映射元组列表,如果要在迭代时解压缩它们,则需要提供匹配的元组大小写。
您也可以像这样解压缩您的元组:
def makeOrderedLeafList(freqs: List[(Char, Int)]): List[Leaf] = freqs.map(tuple => {
val (c, i) = tuple
Leaf(c, i)
})