不幸的是,scala.util.parsing.input.Position没有扩展Ordering[Position]。
ListBuffer要根据位置对错误进行排序,我使用以下代码:
semanticErrors.sortBy(_.pos)(new Ordering[Position] {
def compare(x: Position, y: Position): Int = x.line - y.line
}).toList
我相信这可以做得更优雅。但是怎么做?例如,我注意到Position实现<. 是否有一个通用包装器可以将支持的东西<变成Ordering?
有趣的是,当转换为第一个时,这似乎要容易得多List:
semanticErrors.toList.sort((a, b) => a.pos < b.pos)
但这可能不是最有效的解决方案。就地的那种ListBuffer将是理想的。