Типы данных
Базовые типы
| Название объекта | Формат записи | Пример |
|---|---|---|
| Целое число | <Число> | 42 |
| Число с плавающей точкой | <Число>.<Число> | 3.1415 |
| Строка | '<Выражение>' | 'Я-Строка' |
| Логический тип | [ True, False, Истина, Ложь ] | True |
| Дата | <ДД>.<ММ>.<ГГГГ> | 01.02.2022 |
| Пустой элемент | [ Null, None, Пусто ] | None |
| Комментарий | # <Любое количество элементов до конца строки>или/ <Любое количество элементов> / | # я - однострочный комментарий / а я - многострочный комментарий / |
Операции над базовыми типами
Для базовых типов доступны базовые операции блока, за исключением присваивания.
Массив
Массив представляет собой набор произвольных объектов выражения[ <Выражение1>,...,<ВыражениеN> ]
Динамическое создание массива
[ <Выражение> [ for | для ] <Переменная> [ in | в ] <Данные> (Не обязательно [ if | если ] <Условие>) ]
- Выражение и Условие могут содержать в себе Переменную.
- Данные могут быть любым итерируемым типом данных.
- В Условие используются базовые операции, возвращающий Логический тип данных.
Операции над массивами
Для массивов доступны базовые операции блока, за исключением присваивания. При условии, что вторым операндом является базовый объект. В таком случае, для каждого элемента массива будет проведена своя операция:
- Если при выполнении операции, какой-либо элемент выдаст ошибку, то вся операция будет завершена с ошибкой.
- Операции над двумя массивами приведут к ошибке.
Получение элемента массива
Получение элемента массива происходит по его индексу:
- Индекс элемента начинается с нуля
- Индекс является целым числом
- В качестве индекса может использоваться выражение, только при условии, что результатом этого выражения будет целое число:
Словарь
Словарь представляет собой неупорядоченный набор произвольных объектов выражения с доступом по ключу.
ключомможет быть любой базовый тип выражения;значениемможет быть как любой тип выражения, так и какая-либо операция.
Динамическое создание словаря
{
<ВыражениеКлюч> : <ВыражениеЗначение> [ for | для ] <Переменная> [ in | в ] <Данные> (Не обязательно [ if | если ] <Условие>)
}
ВыражениеКлючиВыражениеЗначениеиУсловиемогут содержать в себеПеременную.Данныемогут быть любым итерируемым типом данных.- В
Условиеиспользуются базовые операции, возвращающий Логический тип данных.
Операции над словарями
Для словарей доступны базовые операции блока, за исключением присваивания. При условии, что вторым операндом является базовый объект. В таком случае, для каждого значения словаря будет проведена своя операция.
- Если при выполнении операции, какой-либо элемент выдаст ошибку, то вся операция будет завершена с ошибкой.
- Операции над двумя словарями приведут к ошибке.
Пример операции
Получение элемента словаря
Получение элемента словаря происходит по его ключу: В качестве ключа может использоваться выражение:Объект
Объектом является структура данных формата
Представлена краткая форма объекта, указаны только поля, важные для выражения.
где:
pkey- словарь первичных ключей, определяющих объект;attrs- словарь атрибутов, не обязательных параметрах объекта.
Объекты нельзя создать внутри выражения. Их можно получить только через вход.
Получение значения объекта
См. Вход -> Получение значений входа
Значение объекта хранится в атрибуте vl. Если такого атрибута нет, то в качестве значения будет
получен пустой элемент.
Получение значений атрибутов объекта
Получение значения атрибута объекта происходит по его ключу.Получение ключей объекта невозможно.
Изменение значений объекта
Изменение значений объекта производится с помощью операции присваивания (см. ниже).
Операции над объектами
Для объектов доступны все базовые операции блока, причем они могут выполниться как и между объектом и базовым объектом (в таком случае логика работы аналогична операциям над словарем), так и между двумя объектами.
Если результатом операции между двумя объектами является новый объект, то первичные ключи для получившегося объекта берется от первого операнда.
| Операция | Операнды | Описание |
|---|---|---|
| Сложение, Вычитание, Умножение, Деление | Объект + Объект = Объект | Происходит объединение объектов в один, после чего выполняется операция для каждых двух элементов с одинаковыми ключами. Если у одного из объектов нет атрибута, который присутствует в другом ряду, то в качестве значения используется Пустой элемент. |
| Сравнение | Объект + Объект = Объект (все значения имеют Логический тип) | Логика аналогична представленному выше, но все получившиеся значения будут иметь Логический тип. |
| Инверсия, Конъюнкция, Дизъюнкция | Объект + Объект = Логический тип | Результатом всегда будет логический тип. |
Присваивание значения объекта
Значение объекта сохраняется в атрибутvl. Если в исходном объекте этого атрибута не было, то он будет добавлен в
момент операции присваивания.
Присваивание атрибутов объекта
В отличие от присваивания значения, присваивание атрибута можно сделать только при наличии самого атрибута в объекте.Присваивание ключей объекта
Изменять значения ключей объекта нельзя.
Ряд данных
Рядом является структура данных формата
{
"pkey": {<key>: <value>},
"keys": [<key1>, <key2>,... <keyN>],
"vl": [<value1>, <value2>,... <valueN>],
"attrs": {<key>: <value>},
"_params": {"fkey": [<labelKey>]}
}
Представлена краткая форма ряда, указаны только поля, важные для выражения.
где:
pkey- словарь первичных ключей, определяющих ряд;keys- массив ключей ряда (совпадающий по размерности с массивом значений);vl- массив значений ряда (совпадающий по размерности с массивом ключей);attrs- словарь атрибутов, не обязательных параметрах ряда;_params.fkey- список ключей, формирующий ряд (ключи ряда).
Ряды нельзя создать внутри выражения. Их можно получить только через вход.
Получение значения ряда
См. Вход -> Получение значений входа
Получение значений атрибутов ряда
Получение значения атрибута ряда происходит по его ключу.{"pkey": {"id": 1}, "keys": [1, 2, 3], "vl": [0.1, 0.2, 0.3], "attrs": {"ord": 25, "name": "ROW"}, "_params": {"fkey": ["num"]}}['name'] → 'ROW'
Получение ключей ряда невозможно.
Изменение значений ряда
Изменение значений ряда производится с помощью операции присваивания (см. ниже).
Операции над рядами
Для рядов доступны все базовые операции блока, причем они могут выполниться как и между рядом и базовым объектом (в таком случае логика работы аналогична операциям над массивом), так и между двумя рядами.
Если результатом операции между двумя рядами является новый ряд, то первичные ключи для получившегося ряда берется от первого операнда.
| Операция | Операнды | Описание |
|---|---|---|
| Сложение, Вычитание, Умножение, Деление | Ряд + Ряд = Ряд | Происходит объединение рядов в один ряд (при этом так же происходит и сортировка получившегося ряда по ключам), после чего выполняется операция для каждых двух элементов ряда с одинаковыми ключами. Если у одного из рядов нет значения для конкретного ключа, то в качестве значения используется Пустой элемент. |
| Сравнение | Ряд + Ряд = Ряд (все значения имеют Логический тип) | Логика аналогична представленному выше, но все получившиеся значения будут иметь Логический тип. |
| Инверсия, Конъюнкция, Дизъюнкция | Ряд + Ряд = Логический тип | Результатом всегда будет логический тип. |
Присваивание одного значения в ряде
Происходит присваивание значения одному элементу из массива значений ряда.Присваивание ряда цкликом
Происходит изменение всех значений и ключей ряда.В качестве значения должен выступать массив. Тогда ключи массива станут новыми ключами ряда, а значения - значениями ряда соответственно.
Присваивание атрибутов ряда
Присваивание ключей ряда
Изменять значения ключей ряда нельзя.