不幸的是,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
将是理想的。