В Scala, как создать экземпляр класса N раз в другом классе - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть класс A , который я хотел создать N раз в другом классе, B , где N - параметр класса B . Есть ли способ сделать это с помощью каких-либо циклических методов?

class A {
   \\my code
}

class B (N : Int) {
   val inst1 = new A
   val inst2 = new A


   val instN = new A
   //my code
}

1 Ответ

1 голос
/ 23 апреля 2020

Это будет означать, что класс будет иметь динамическое c число членов, что невозможно.

Однако, есть более простые способы express нескольких элементов. И это использует коллекцию.
В этом случае я считаю, что лучше всего было бы что-то с быстрым доступом по индексу, поэтому я бы использовал ArraySeq .

final class B(n: Int) {
  val instances: ArraySeq[A] = ArraySeq.tabulate(n)(_ => new A)
}

Вы можете скрыть коллекции как приватный член и вместо этого предоставить доступ методом apply.

PS: Если вы используете 2.12 или предыдущий выпуск, ArraySeq не существует, вы можете использовать Vector вместо этого как: (0 to n). map(_ => new A).toVector

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