我是Scala的初学者。我想对一个Set进行排序,然后提供给用户一个新的已排序的Set,所以旧的Set应该保持不变。
我已经有了一个类似于BaseTrait[+A]的trait,我想要扩展它。
trait BaseSet[+A] { //it extends scala Set
def +[B >: A](item: B): BaseSet[B]
def -[B >: A](item: B): BaseSet[B]
def size: Int
def contains[B >: A](item: B): Boolean
}
trait SetWithSort[+A] extends BaseSet[A] {
abstract def sort[B](implicit ordering: Ordering[_ >: B]): Set[B]
def logicBeforeSorting(): Set[B] ={
sort
}
}
object MainObject {
def OrderByName:Ordering[String] => Set[String] = ???
def execute[T](callback:Ordering[T]): Ordering[T] = callback //Problem, I // want Set[T] here
// I want to get a new Set with elements sorted as per my provided ordering
}
SortedSet
呢? - joelSet
(Set[B]
,Set[String]
等)的引用实际上都是指你自己的trait Set[+A]
而不是标准库中的Set
? - jwvhSet
没有顺序,因此无法进行排序。这就是为什么存在SortedSet
和TreeSet
,以防您需要对保证唯一性元素的集合进行排序。 - jwvh