我想要这个匹配两个案例类的比较函数,但它有点冗长。在Scala中匹配的案例类别
叶子总是在列表中排序的顺序。
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
def sortCodeTreeFun(x: CodeTree, y: CodeTree) = {
(x, y) match {
case (x1: Leaf, y1: Leaf) => true
case (x1: Fork, y1: Leaf) => x1.weight < y1.weight
case (x1: Leaf, y1: Fork) => x1.weight < y1.weight
case (x1: Fork, y1: Fork) => x1.weight < y1.weight
}
}
我试图修改码树的构造是:
abstract class CodeTree(weight: Int)
所以,我可以直接比较X和Y,但是编译器说:
“没有足够的论据构造码树:(weight:Int)patmat.Huffman.CodeTree“
有没有另一种方法缩短sortCodeTreeFun方法?
这是从FP Scala的功课在线课程 – smk
纯违反荣誉规章4“在斯卡拉功能编程” 当然导体“我不会试图不诚实地改进我的代码....“ –
我已经完成了任务并获得了10/10。在尝试提高对Scala语言的理解时,看不到任何不光彩的东西。 – Zotov