20.24. Как проще заполнять массив?
В:
Нет ли способа упростить внесение первоначальных данных в массив? Чтобы не писать
mass[0] = 123
mass[1] = 234
mass[2] = 345
! и т.д.
а вместо этого написать что-то типа
mass = [123, 234, 345]
О:
Кортежи будут выделены в новый тип данных в версиях плеера выше 5.8.0, поэтому данный алгоритм требует пересмотра.
QSP предоставляет возможность самостоятельно писать любые функции, которые вам необходимы, в том числе и такие, которые будут упрощать ввод данных.
В данном случае мы можем написать функцию, которая будет принимать в качестве аргумента имя массива и кортеж значений, которые мы в этот массив хотим поместить, и с помощью цикла внутри функции извлечь из кортежа все значения в подряд идущие ячейки массива.
Вот как может выглядеть такая функция:
!# full_array
local $arr_name_, $tuple_ = $args[0], $args[1]
loop while $arritem($arr_name_, arrsize($arr_name_)-1) <> $tuple_:
dynamic "<<$arr_name_>>[], $tuple_ = $tuple_"
end
! за упрощение алгоритма спасибо HronoStranger`у
Теперь, когда нам нужно быстро записать в массив много значений, не расписывая на множество строчек присвоение каждой ячейке, мы просто вызываем функцию "full_array":
! вносим в массив значения
@full_array('mass', (123, 234, 345))
! для проверки внесённых значений используем цикл
loop local i = 0 while i < arrsize('mass') step i += 1:
*pl mass[i]
end
Данная функция была реализована в easy.math версии 3.0.