残念ながら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
が理想的です。