0
有人可以幫我理解下面的編譯錯誤消息嗎?我一直在看這一段時間,我不明白什麼是錯的。斯卡拉分歧implicit擴展編譯器錯誤
def makeOrderedLeafList(freqs: List[(Char, Int)]): List[Leaf] = {
val buff = ListBuffer[Leaf]();
for(u<-freqs) {
val v = new Leaf(u._1, u._2)
buff += v
}
buff.toList.sortBy(_.weight) //<= offending line
}
錯誤消息:
發散類型scala.math.Ordering [B]與方法Tuple9在對象開始 訂購
EDIT隱式膨脹: 類聲明的樣子:
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
嗨 - 我認爲這嚴重依賴於葉的定義 - 只需複製你的榜樣,並推斷該類葉也許可以是這樣的:'情況class Leaf(weight:Char,freq:Int)',它對我來說工作得很好。你還使用什麼scala版本(2.10,2.9)? – 2013-04-26 04:26:37
更新我的答案來說明類定義 – 2013-04-26 05:56:54
您使用了哪個scala版本? - 或者:你可以用Scala 2.10.1再試一次嗎? - 似乎與2.10一起工作,因爲我沒有任何問題 - 以及「Vorsprung」(見下面的答案)。 – 2013-04-26 11:51:28