【发布时间】:2013-04-26 03:06:58
【问题描述】:
有人可以帮我理解下面的编译错误消息吗?我已经看了一段时间了,我不明白这是怎么回事。
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
编辑: 类声明如下:
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
【问题讨论】:
-
嗨 - 我认为这在很大程度上取决于 Leaf 的定义 - 只是复制了你的例子并推断出 Leaf 类可能看起来像这样:
case class Leaf (weight: Char, freq: Int)它对我来说很好用。另外你使用什么 scala 版本(2.10、2.9)? -
更新了我的答案以说明类定义
-
你使用的是哪个 scala 版本? - 或者:你能用 Scala 2.10.1 再试一次并干净编译吗? - 似乎适用于 2.10,因为我没有任何问题 - 以及“Vorsprung”(请参阅下面的答案)。
标签: scala