foreach

Назначение

Функция foreach выполняет итерацию списка колонок, полученных с помощью именованных параметров name/tag/test (допускается только один метод) и создает новую колонку с именем, рассчитанным в предыдущем именованном аргументе column, и с данными, рассчитанными в первом выражении.

Функция foreach является одной из функций, основанных на итерации колонок.

Синтаксис

foreach(выражение,…​)

Аргументы

Функция foreach использует один из определенных именованных аргументов в качестве единственного позиционного аргумента, но вы также можете использовать другие именованные аргументы.

Функция foreach берет колонки из заданной таблицы данных и применяет к этим колонкам правило из аргумента. Эти правила могут включать любые функции SRL, а также специальный аргумент arg, определяющий значение колонки, выбранной итератором. Вы также можете использовать следующие функции:

  • colname() для доступа к имени колонки;

  • colindex() для доступа к индексу колонки, рассчитываемому с 1;

  • coltype() для доступа к типу колонки: "numerical" (числовой), "integer" (целочисленный), "yesno" (булевый), "string" (строковый), "datetime" (время/дата), "stringid" (строковый идентификатор), "text" (текстовый), "numid" (числовой идентификатор).

Функции colname, coltype и colindex не могут использоваться отдельно. Они используются только в составе функций, основанных на итерации колонок, а также с функциями, использующими определенные именованные аргументы для итерации.

Функция foreach также может включать именованный аргумент column, с помощью которого можно задать имя новой колонки (по умолчанию этим именем будет arg). Вы также можете использовать любое SRL-выражение, не ссылающееся на другие колонки исходной таблицы данных.

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

Например:

foreach(rule [, <name|tag:=string> | <test:=boolean_expression>] [, column:=string_expression] ), где:

  • rule - любое выражение, включающее любые колонки или теги таблицы данных, включая специальный идентификатор для текущей колонки: arg;

  • name - регулярное выражение для выбора колонки; по умолчанию значение равно "*" (обозначает все колонки таблицы данных);

  • tag - тег для выбора колонки;

  • test - именованный аргумент;

  • column - строковое выражение, обозначающее новое имя колонки (по умолчанию значение равно arg). Это выражение не может включать колонки таблицы данных.

Возвращаемое значение

Возвращает набор выражений в отдельной колонке в соответствии с указанными параметрами.

Примеры

foreach(arg + 1, test := colindex() < = 10 and left(colname(), 2) = "ax" and coltype() = "integer") инкрементирует первые 10 колонок, наименования которых начинаются с букв ax .

foreach(arg + 1, name := "ax*", column := format("inc(%1%)", arg)) инкрементирует все колонки таблицы данных, наименования которых начинаются с букв ax, и создает новые колонки, названные по данному шаблону.

foreach( format("%1%(%2% at %3%) = %4%", coltype(), colname(), colindex(), arg), test := colindex() ⇐ 10 and left(colname(), 1) = "a" and coltype() = "integer", column := format("%1%(%2% at %3%)", coltype(), colname(), colindex()) min(test:=colindex()>1, operation:=arg + colindex())