我想要這個匹配兩個案例類的比較函數,但它有點冗長。在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