我想为 Scala 中的可变和不可变 TreeMap 和 TreeSet 添加一些有用的隐式。
这是我的尝试:
首先尝试定义具有
headOption
/lastOption
(fromGenTraversableLike
) 和from
/to
/until
(fromSorted
) 的 TreeMap 和 TreeSet 的最小上界:type SortedCollection[A, Repr <: SortedCollection[A, Repr]] = collection.generic.Sorted[A, Repr] with collection.GenTraversableLike[A, Repr]
写我的工具:
implicit class RichSortedCollection[A, Repr <: SortedCollection[A, Repr]](s: SortedCollection[A, Repr]) { def greaterThanOrEqualTo(a: A): Option[A] = s.from(a).headOption def lessThan(a: A): Option[A] = s.until(a).lastOption def lessThanOrEqualTo(a: A): Option[A] = s.to(a).lastOption }
这仅部分有效:SortedSet#greaterThan
编译但TreeMap#greaterThan
不编译。我如何解决它?