Построение таблицы из списка параметров
Бывает необходимо создать таблицу данных из списка параметров, закодированных в строки и разделенных запятой, т.е. "param1", 'param2', null
. Например, этот метод используется для вызова функции из ссылки или запроса.
SberMobile использует общий алгоритм для посторения таблицы данных из списка параметров, закодированных в строки. Этот алгоритм использует типы полей, определенных в формате, для конвертирования параметров строки в определенные значения поля и различные ячейки в таблице данных. Этот формат может быть, например, форматом ввода функции, для которой создается вводная таблица данных.
Проще говоря, система знает формат таблицы, которая создается, берет значения строк из исходного списка по одному, конвертирует их в определенные типы и заполняет ячейки таблицы.
Параметры в списке должны разделяться запятыми (",") и могут содержать следующие типы значений:
Значение | Пример | Описание |
Строка без кавычек, строка с одинарными кавычками |
| Кавычки извлекаются из строки, если она заключена в кавычки. Результирующее значение обрабатывается как выражение, которое оценивается, и результат оценки используется в качестве значения ячейки в таблице входных параметров функции. Если вы не уверены в том, каково выражение, можно представить его как формулу динамической таблицы (1+1, например). Глава язык выражений SberMobile объясняет все аспекты. |
Строка с двойными кавычками |
| Кавычки извлекаются из строки. Результирующее значение не обрабатывается как выражение -- наоборот, оно конвертируется в любой тип данных, который функция ожидает для этого аргумента. Конверсия производится по принципу "наилучшие усилия" -- вы не всегда сможете конвертировать любой тип данных в любой другой тип данных. |
Правила кодирования/декодирования значений различных типов в строки/из строк можно найти здесь.
Каждая ячейка в этой таблице получает свое значение из соответствующего аргумента в списке аргументов (т.е. значение первой ячейки - это значение первого аргумента в списке).
Если создаваемая таблица данных имеет динамический (неопределенный) формат, система выстраивает таблицу данных в одну строку со всеми строковыми полями. Каждый исходный параметр помещается в отдельное поле. |
Очень редко функция может ожидать больше одного ряда полей (т.е., больше одной "записи") в качестве ввода. Если формат ввода функции определяет N полей, первые N аргументов используются для заполнения первой строки, вторые N аргументов для второй и т.д.
Пример: Допустим, у вас есть функция func1 (произвольное имя), которая ожидает следующую таблицу данных ввода с двумя полями и двумя рядами: |