Scala分歧隐式扩展编译器错误

时间:2013-04-26 03:06:59

标签: scala

有人可以帮我理解下面的编译错误消息吗?我一直在看这个问题一段时间,我不明白什么是错的。

  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

1 个答案:

答案 0 :(得分:0)

在scala 2.10.0上为我工作

import scala.collection.mutable._

然后粘贴上面提供的代码。 makeOrderedLeafList编译时没有错误,似乎以预期的方式工作:

scala> makeOrderedLeafList(List(('a',8),('b',9),('c',99),('d',1)))
res0: List[Leaf] = List(Leaf(d,1), Leaf(a,8), Leaf(b,9), Leaf(c,99))