Перейти к основному содержимому

20.24. Как проще заполнять массив?

В:

Нет ли способа упростить внесение первоначальных данных в массив? Чтобы не писать

mass[0] = 123
mass[1] = 234
mass[2] = 345
! и т.д.

а вместо этого написать что-то типа

mass = [123, 234, 345]

О:

В QSP существует специальный тип данных, который называется кортеж. Он позволяет хранить несколько значений, как одно.

Так же существует ряд операторов и функций для работы с кортежами, и одним из таких операторов вы можете воспользоваться, чтобы быстро заполнять массив значениями.

Всё очень просто:

! объявляем временную переменную для быстрой записи значений:
local %values
! заполняем её значениями
%values = [123, 234, 345]
! распаковываем значения в массив
unpackarr 'mass', %values

Можно обходиться и без отдельной переменной:

unpackarr 'mass', [123, 234, 345]

У способа без переменной есть ограничения. Через запятую можно указать только двадцать значений. Если же вы пользуетесь способом с переменной, вы можете сформировать кортеж длиной больше двадцати элементов, используя конкатенацию:

! объявляем временную переменную для быстрой записи значений:
local %values
! заполняем её значениями
%values = [
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20
]
%values = (%values & [
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40
])
! распаковываем значения в массив
unpackarr 'mass', %values