Вход
Приветствую Вас Гость
 

easy.math.qsp v. 3.2.0

Операции над массивами. Страница 1

em.arr.print

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

$args[0]- имя массива, содержимое которого необходимо просмотреть.
$args[1] - управляющая конструкция. Можно использовать три команды в любых комбинациях:

  • [only result] - выводит только содержимое массива, не показывая его названия и номера ячеек.
  • [trim] - отсекает прилегающие пробелы и символы табуляции при выводе значения элемента массива.
  • [with last] - разрешает добавление разделителя к последнему значению.

%args[2] - начало и окончание вывода (кортеж с номерами элементов, с какого по какой выводить, включительно).
$args[3] - разделитель, который нужно поместить между значениями при режиме [only result]. По умолчанию перенос строки. Если разделитель не нужен указывается /se

Примеры вызова функции:
*pl @em.arr.print('mass')
     - выведет на экран числовые значения массива 'mass'
*pl @em.arr.print('$mass')
     - выведет на экран текстовые значения массива '$mass'
*pl @em.arr.print('$mass','[only Result]')
     - выведет на экран только содержимое массива '$mass'
Результаты вызова функции:
Заготовленный массив:
$a[]='нулевая ячейка'
$a[]=' первая ячейка '
$a[]=' вторая ячейка'
$a[]=''
$a[]=(1,2,3,5,6)
$a[]=' пятая ячейка'
$a[]=''
$a[]='седьмая ячейка'
Вывод массива:
@em.arr.print('$a')=
"$a[0]='нулевая ячейка'
$a[1]='   первая ячейка   '
$a[2]=' вторая ячейка'
$a[3]=''
$a[4]='[1,2,3,5,6]'
$a[5]='   пятая ячейка'
$a[6]=''
$a[7]='седьмая ячейка'
"
Выводим исключительно значения массива:
@em.arr.print('$a','[only result]')=
"нулевая ячейка
   первая ячейка   
  вторая ячейка

[1,2,3,5,6]
   пятая ячейка

седьмая ячейка
"
Выводим значения массива с отсечением прилегающих пробелов в каждом значении:
@em.arr.print('$a','[trim]')=
"$a[0]='нулевая ячейка'
$a[1]='первая ячейка'
$a[2]='вторая ячейка'
$a[3]=''
$a[4]='[1,2,3,5,6]'
$a[5]='пятая ячейка'
$a[6]=''
$a[7]='седьмая ячейка'
"
Выводим исключительно значения массива, со второго по пятый элемент, включительно, с отсечением прилегающих пробелов в каждом значении; в качестве разделителя используем вертикальную черту:
@em.arr.print('$a','[trim] [only result]',[2,5],'|')=
"вторая ячейка||[1,2,3,5,6]|пятая ячейка"
Выводим исключительно значения массива, со второго по пятый элемент, включительно, с отсечением прилегающих пробелов в каждом значении; в качестве разделителя используем вертикальную черту; добавляем разделитель в конце:
@em.arr.print('$a','[trim] [only result] [with last]',[2,5],'|')=
"вторая ячейка||[1,2,3,5,6]|пятая ячейка|"

em.fewArrs.print

Данная функция позволяет выводить на экран содержимое сразу нескольких массивов, для сравнения например.

По умолчанию функция выводит содержимое всех массивов в виде таблицы, однако вывод таблицей можно отключить, использовав в последнем аргументе управляющую конструкцию [no table]. Последним аргументом может быть как имя массива так и управляющая конструкция. Функция считает управляющей конструкцией всякую строку в последнем аргументе, в которой между непробельными символами находится пробельный (или другой недопустимый знак). Прилегающие пробелы в остальных аргументах уничтожаются, поэтому вы можете записать имя массива в аргументе скажем так " $mass " (апострофы по правилам QSP для записи текстовых значений). Если же вы допустите в имени массива ошибку, функция известит вас об этом.

$args[0 ... 18]- имена массивов, содержимое которых необходимо просмотреть.

$args[18 ... 1] - управляющая конструкция. Записывается последним аргументом. Можно использовать следующие конструкции в любых комбинациях:

  • [only result] - выводит только содержимое массивов, не показывая их названий и номеров ячеек. Таблица при этом на экран выводиться не будет.
  • [no table] - выводит массивы на экран, но не облекает их в таблицу.
  • [range onscreen:N-M] - указываем границы вывода, N и M — номера элементов.
  • [empty:TEXT] - Замена стандартному значению, если все массивы окажутся пустыми.
Результаты вызова функции:
Заготовленные массивы:
$a[]='нулевая ячейка'
$a[]=' первая ячейка '
$a[]=' вторая ячейка'
$a[]=''
$a[]='четвёртая'' ячейка'
$a[]=" пятая яче'йка"
$a[]=''
$a[]='седьмая ячейка'

$b[]='нулевая ячейка'
$b[]=' первая ячейка '
$b[]=' вторая ячейка'
$b[]='3'
$b[]=(3,5,6,'string',6)
$b[]=' пятая ячейка'
$b[]='6'
$b[]='7'
Вывод двух массивов:
@em.fewArrs.print('$a','$b')=
# $a $b
0 нулевая ячейка нулевая ячейка
1    первая ячейка       первая ячейка   
2     вторая ячейка   вторая ячейка
3   3
4 четвёртая' ячейка [3,5,6,'string',6]
5    пятая яче'йка    пятая ячейка
6   6
7 седьмая ячейка 7
Вывод двух массивов, только значения:
@em.fewArrs.print('$a','$b','[only result]')=
"нулевая ячейка  нулевая ячейка
   первая ячейка       первая ячейка   
 вторая ячейка   вторая ячейка
    3
четвёртая' ячейка   [3,5,6,'string',6]
   пятая яче'йка       пятая ячейка
    6
седьмая ячейка  7"
Вывод двух массивов, без таблицы:
@em.fewArrs.print('$a','$b','[no table]')=
"$a[0]='нулевая ячейка'  &   $b[0]='нулевая ячейка'
$a[1]='   первая ячейка   ' &   $b[1]='   первая ячейка   '
$a[2]=' вторая ячейка'  &   $b[2]=' вторая ячейка'
$a[3]=''    &   $b[3]='3'
$a[4]='четвёртая'' ячейка'  &   $b[4]='[3,5,6,''string'',6]'
$a[5]='   пятая яче''йка'   &   $b[5]='   пятая ячейка'
$a[6]=''    &   $b[6]='6'
$a[7]='седьмая ячейка'  &   $b[7]='7'"
Вывод двух пустых массивов:
@em.fewArrs.print('$c','$d')=
"All your massives are empty."
Ошибочное написание имени массива:
@em.fewArrs.print('$a','$b','[no table]','$f')=
"Error: Array's name is not correct. ARGS[2]: '[no table]'"

em.arr.insert

Функция для вставки элемента в массив со сдвигом вправо.

$args[0] - название массива.
$args[1] - значение, которое хотим присвоить элементу (тип определяется по префиксу названия массива).
args[2] - индекс элемента, куда хотим поместить новое значение.

Результат работы функции:
Заготовленный массив:
mass[0]=574
mass[1]=668
mass[2]=413
mass[3]=765
mass[4]=478
mass[5]=205
mass[6]=701
mass[7]=272
Вставка по числовому индексу:
@em.arr.insert('mass',6,4)
! теперь массив содержит следующий набор значений:
mass[0]=574
mass[1]=668
mass[2]=413
mass[3]=765
mass[4]=6
mass[5]=478
mass[6]=205
mass[7]=701
mass[8]=272

em.arr.clear

Функция для удаления из массива всех элементов с указанным значением.

$args[0] - название массива.
$args[1] - значение, которое хотим удалить из массива.

Результат работы функции:
Заготовленный массив:
mass[0]=1
mass[1]=2
mass[2]=3
mass[3]=1
mass[4]=2
mass[5]=3
mass[6]=1
mass[7]=2
Удаляем все двойки:
@em.arr.clear('mass',2)

mass[0]=1
mass[1]=3
mass[2]=1
mass[3]=3
mass[4]=1

em.arr.concatenate

Объединяет в общий массив кортежей значения из двух и более массивов.

$args[0] - название массива, в который нужно объединить остальные (только с префиксом '%').
$args[1 ... 18] - названия массивов, значения из которых нужно объединить в массив кортежей. Тип извлекаемых из массивов значений определяется по префиксу типа.

Результат работы функции:
Заготовленные массивы, вызов функции и цикл для проверки:
old_mass[0]=967
old_mass[1]=629
old_mass[2]=541
old_mass[3]=290
old_mass[4]=852
old_mass[5]=334
old_mass[6]=318
old_mass[7]=529

$mass[0]='88ff88'
$mass[1]='ff00ff'
$mass[2]='0ff0f8'
$mass[3]='ffffff'
$mass[4]='8888ff'
$mass[5]='fff8f8'

$arr_mass[0]='голова'
$arr_mass[1]='плечи'
$arr_mass[2]='грудь'
$arr_mass[3]='живот'
$arr_mass[4]='бёдра'
$arr_mass[5]='колени'
$arr_mass[6]='икры'
$arr_mass[7]='ступни'

@em.arr.concatenate('%em_result', 'old_mass', '$mass', '$arr_mass')

loop local i,size=0,arrsize('%em_result') while i<size step i+=1:
   *pl "%em_result[<<i>>]=<<%em_result[i]>>"
end
На экран выведется:
%em_result[0]=[967,'88ff88','голова']
%em_result[1]=[629,'ff00ff','плечи']
%em_result[2]=[541,'0ff0f8','грудь']
%em_result[3]=[290,'ffffff','живот']
%em_result[4]=[852,'8888ff','бёдра']
%em_result[5]=[334,'fff8f8','колени']
%em_result[6]=[318,'','икры']
%em_result[7]=[529,'','ступни']

em.arr.enumerate

Генерирует массив кортежей на основе указанного массива. Каждый сгенерированный кортеж состоит из двух элементов: значение исходного массива, индекс.

$args[0] - название исходного массива (тип извлекаемых значений определяется по префиксу типа в названии массива).
$args[1] - название целевого массива (только с префиксом '%').

Результат работы функции:
Заготовленный массив, вызов функции, цикл проверки:
old_mass[0]=157
old_mass[1]=250
old_mass[2]=709
old_mass[3]=413
old_mass[4]=532
old_mass[5]=779
old_mass[6]=730
old_mass[7]=565

@em.arr.enumerate('old_mass', '%em_array')

loop local i,size=0,arrsize('old_mass') while i<size step i+=1:
*pl "old_mass[<<i>>]=<<old_mass[i]>>; %em_array[<<i>>]=<<%em_array[i]>>"
end
Вывод на экран:
old_mass[0]=157; %em_array[0]=[157,0]
old_mass[1]=250; %em_array[1]=[250,1]
old_mass[2]=709; %em_array[2]=[709,2]
old_mass[3]=413; %em_array[3]=[413,3]
old_mass[4]=532; %em_array[4]=[532,4]
old_mass[5]=779; %em_array[5]=[779,5]
old_mass[6]=730; %em_array[6]=[730,6]
old_mass[7]=565; %em_array[7]=[565,7]

em.arr.few_kill

Множественное удаление элементов массива.

$args[0] - название массива, в который нужно объединить остальные (только с префиксом '%').
$args[1 ... 18] - индексы строковые, числовые, кортежи.

Результат работы функции:
Пример вызова функции:
mass[0]=574
mass[1]=668
mass[2]=413
mass[3]=765
mass[4]=478
mass[5]=205
mass[6]=701
mass[7]=272

@em.arr.few_kill('mass', 2, 4, 5)
@em.arr.print('mass')
На экране:
mass[0] = 574
mass[1] = 668
mass[2] = 765
mass[3] = 701
mass[4] = 272

Aleks Versus'Easy Libraries'2013-

Aleks Versus'Game Adventure Making'Really Unimaginable Stories'2013-

Наверх