Отсортированная общая c последовательность - PullRequest
0 голосов
/ 06 мая 2020

Я новичок в scala. У меня есть общий c класс,

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
}

И я хочу, чтобы список внутри класса был отсортирован. Так, например, в этом случае я хочу получить в строках и числах List (a, b, c) и List (1,2,4,5). Как мне это сделать?

1 Ответ

2 голосов
/ 06 мая 2020

Вы можете сделать конструктор закрытым и определить экземпляр метода factory с помощью sorted initialElems

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 остается отсортированным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...