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