Avatar
dropLast(while:)suffix(while:) がほしくなった。
  • 履歴のようなものをソート済 Array で持っていて、指定された範囲にマッチするものを抜き出したい。
  • 履歴は後ろに積み上がるので、要素追加を O(1) で行うためには昇順で要素を保持する必要がある。
  • 指定される範囲は最近のものであることが多いので末尾から検索したい。
この要件を満たすコードを考えると、 history .dropLast(while: { $0.date >= range.upperBound }) .suffix(while: { $0.date >= range.lowerBound }) のようなことがしたくなる。 RandomAccessCollection なら dropLast(while:)suffix(while:) があってもいいと思う。 SortedDictionary があれば解決する話ではあるけど。