Scala 排序泛型序列
我是斯卡拉的新手。我有一个通用类Scala 排序泛型序列,scala,generics,Scala,Generics,我是斯卡拉的新手。我有一个通用类 object Main extends App{ val strings = new CustomSeq("b", "c", "a") val numbers = new CustomSeq(1,5,4,2) } class CustomSeq[T](initialElems: T*) { private val elems = scala.collection.mutable.ArrayBuffer[T]() elems ++= i
object Main extends App{
val strings = new CustomSeq("b", "c", "a")
val numbers = new CustomSeq(1,5,4,2)
}
class CustomSeq[T](initialElems: T*) {
private val elems = scala.collection.mutable.ArrayBuffer[T]()
elems ++= initialElems
}
我想把课堂上的名单整理一下。例如,在这个例子中,我想输入字符串和数字
列表(a、b、c)和列表(1、2、4、5)。
我该怎么做呢?您可以将构造函数设为私有,并使用排序的
初始元素定义工厂方法创建实例
class Seq[T] private(initialElems: T*) {
override def toString: String = initialElems.toString
}
object Seq {
def apply[T: Ordering](initialElems: T*): Seq[T] = new Seq(initialElems.sorted:_*)
}
val strings = Seq("b", "c", "a")
val numbers = Seq(1,5,4,2)
println(strings) // ArraySeq(a, b, c)
println(numbers) // ArraySeq(1, 2, 4, 5)
当然,在
Seq
(如果您添加了任何)中的操作之后,您必须注意初始元素保持排序。您可以将构造函数设置为私有,并使用排序的初始元素定义工厂方法创建实例
class Seq[T] private(initialElems: T*) {
override def toString: String = initialElems.toString
}
object Seq {
def apply[T: Ordering](initialElems: T*): Seq[T] = new Seq(initialElems.sorted:_*)
}
val strings = Seq("b", "c", "a")
val numbers = Seq(1,5,4,2)
println(strings) // ArraySeq(a, b, c)
println(numbers) // ArraySeq(1, 2, 4, 5)
当然,在Seq
(如果您添加了)中的操作之后,您必须注意initialElems
保持排序。将与您的Seq
和标准库中的名称发生冲突,顺便说一句,将与Seq
和标准库中的名称发生冲突,顺便说一句