Создайте значения в al oop с последовательными именами - PullRequest
0 голосов
/ 13 апреля 2020

Я хочу создать значения в al oop с последовательными постфиксами в именах: b1, b2, b3, b4 ...

С кодом

for( a <- 1 to 10){
         val 'b'+a = new Button()
      }

Так происходит следующее

val b1 = new Button()
val b2 = new Button()
val b3 = new Button()
val b4 = new Button()
val b5 = new Button()
val b6 = new Button()
val b7 = new Button()
val b8 = new Button()
val b9 = new Button()

Ответы [ 3 ]

4 голосов
/ 13 апреля 2020

Как было предложено Carcigenicate в разделе комментариев, вы можете использовать List или другую подобную структуру сбора / данных:

(for(_ <- 0 until 10) yield new Button()).toList

Вызов toList является optinal, в противном случае Range возвращается.

2 голосов
/ 13 апреля 2020

Если вы просто хотите получить список кнопок, сделайте следующее:

val buttons = List.fill(10)(new Button())

Затем получите доступ к ним по индексу

val b2 = buttons(1) // First element is 0
1 голос
/ 13 апреля 2020

Если вы хотите получить доступ к кнопкам по именам, попробуйте создать Map

val buttons = Map.from((1 to 10).map(i => s"b$i" -> new Button()))
buttons.get("b1")

Обратите внимание, что мы не можем объявить имя значения динамически (во время выполнения), поэтому ниже приводится синтаксическая ошибка

val "x"+1 = 42 // compile-time error

Ключевая концепция, которую нужно понять, - это разница между тем, что происходит в время компиляции , против времени выполнения , то есть разница между средства, предоставленные до , программа запускается против после , программа запускается. Введение имени значения как части определения значения является чисто концепцией времени компиляции.

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