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

easy.math.qsp v. 3.1.0

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

em.arr.print

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

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

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

$args[2] - этим параметром задаётся разделитель между выводимыми значениями. По умолчанию, т.е. когда параметр не указан или равен пустому значению, между выводимыми значениями вставляется символ перевода строки. Чтобы результаты выводились без вставки разделителя, необходимо указать ключ /se.
 args[3] - начало вывода. Номер элемента, с которого начинается вывод значений (включительно).
 args[4] - окончание вывода. Номер элемента, до которого следует продолжать вывод значений (включительно).

Примеры вызова функции:
*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] [not last]','|',2,5)=
"вторая ячейка||(1,2,3,5,6)|пятая ячейка"

em.fewArrs.print

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

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

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

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

  • [only result] - выводит только содержимое массивов, не показывая их названий и номеров ячеек. Таблица при этом на экран выводиться не будет.
  • [no table] - выводит массивы на экран, но не облекает их в таблицу.
Результаты вызова функции:
Заготовленные массивы:
$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.chType

Процедура изменяет тип содержимого массива. То есть меняется тип каждой отдельной ячейки.

$args[0] - название массива, для которого требуется поменять тип. Можно указывать как с символом '$', так и без него перед именем.
$args[1] - управление:
  • [string] - все ячейки массива приводятся к строковому типу;
  • [number] - все ячейки массива приводятся к числовому типу;
  • [reverse] - тип ячеек меняется на противоположный (не знаю, кому это может понадобиться);
  • [hard] - режим, расширяющий работу режима [string], при этом ячейкам, тип которых определяется как 'empty' (см. функцию em.var.getType), принудительно присваивается строковое значение '0'.
$args[2] - результирующий массив. Если не указано, результат помещается в исходный массив.
Результаты работы функции:

Пример заполнения массивов, вызова функции и вывода на экран получившихся значений:

$mass[0]='123'
$mass[1]='456'
mass[2]=789
mass[3]=901
$mass[4]='stringAbout'
$mass[5]='555'
$mass[6]=(123,56,23,9,137)
$mass[7]=''
$mass[8]='123'
mass[9]=4569

@em.arr.chType('mass','[string]','mass_str')
@em.arr.chType('mass','[number]','mass_num')
@em.arr.chType('mass','[reverse]','mass_rev')
@em.arr.chType('mass','[string][hard]','mass_strh')
@em.arr.chType('mass','[reverse][hard]','mass_revh')
@em.fewArrs.print('$mass','mass','$mass_str','mass_num','$mass_rev','mass_rev','$mass_strh','$mass_revh','mass_revh')

А вот так будет выглядеть содержимое этих массивов:

# $mass mass $mass_str mass_num $mass_rev mass_rev $mass_strh $mass_revh mass_revh
0 123 0 123 123   123 123   123
1 456 0 456 456   456 456   456
2   789 789 789 789 0 789 789 0
3   901 901 901 901 0 901 901 0
4 stringAbout 0 stringAbout 0   0 stringAbout   0
5 555 0 555 555   555 555   555
6 (123,56,23,9,137) 0 (123,56,23,9,137) 0   0 (123,56,23,9,137)   0
7   0   0   0 0 0 0
8 123 0 123 123   123 123   123
9   4569 4569 4569 4569 0 4569 4569 0

Поскольку функция фактически перебирает массив с созданием нового, она может заметно подвешивать игру при очень больших размерах массива: 7,5 сеекунд для массива из 100000 элементов. В 5.7.0 данная функция требовала 17 секунд на стотысячный массив.


Aleks Versus'Easy Libraries'2013-

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

Наверх