4

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

4

2 に答える 2

8

ListBuffer次のsortWithメソッドでソートできます。

semanticErrors.sortWith(_.pos < _.pos)
于 2012-08-21T13:18:26.603 に答える