Присваивание
Выражение присваивания присваивает результат выражения справа от знака равенства цели слева. Целью может быть путь, индекс массива или переменная.
Синтаксис
Список принятых обозначений
В данном разделе при описании выражений приняты следующие обозначения:
-
Элементы выражений разделены тильдой.
-
Круглые скобки служат для группировки элементов выражения.
-
Если в выражении используется литерал скобок или других символов, они заключаются в кавычки:
"("."NEWLINE"обозначает перевод строки. -
Квантификаторы после элементов и групп обозначают количество повторений:
-
?— элемент необязателен, может отсутствовать в выражении; -
+— элемент обязателен и может повторяться в выражении несколько раз; -
*— элемент может отсутствовать или повторяться несколько раз.
-
target ~ ("," ~ error)? ~ operator ~ expression
| Элемент | Описание |
|---|---|
|
Цель. Должна быть переменной, индексом или путем. Возможно присваивание сразу нескольким целям, разделенным оператором |
|
Ошибка. Позволяет необязательное присваивание, когда выражение справа может возвращать ошибки. Обычно используется при вызове функций, которые могут возвращать ошибки. |
|
Оператор. Разделяет
|
|
Выражение, зависящее от типа цели
|
| Используйте VRL-песочницу, чтобы проверить работу программы. |
Примеры присваивания
Пример присваивания пути
.message = "Hello, World!"
{
"message": "Hello, World!",
}
Пример присваивания по вложенному пути
.parent.child = "Hello, World!"
{
"parent": {
"child": "Hello, World!"
}
}
Пример присваивания элементу массива
.array[1] = "Hello, World!"
{
"array": [
null,
"Hello, World!"
]
}
Пример присваивания переменной
my_variable = "Hello, World!"
"Hello, World!"
Пример присваивания с возможностью ошибки (успех)
.parsed, .err = parse_json("{\"Hello\": \"World!\"}")
{
"parsed": {
"Hello": "World!"
}
}
Пример присваивания с возможностью ошибки (ошибка)
.parsed, .err = parse_json("malformed")
{
"err": "malformed"
}
Множественное присваивание
Оператор = может использоваться для присваивания нескольким целям сразу. Множественное присваивание неприменимо, если используется присваивание ошибок.
Присваивание со слиянием
Оператор |= обновляет поля в целевом объекте на основе содержимого исходного объекта. Здесь целевой объект — это объект в левой части выражения, а исходный — объект в правой части. При этом:
-
Поля, которые есть только в целевом объекте, остаются неизменными.
-
Поля, которые есть только в исходном объекте, добавляются в целевой.
-
Если поле существует в обоих объектах, значение поля из исходного объекта заменяет значение из целевого объекта. Вложенные структуры в таком случае не учитываются.
Чтобы при слиянии объединить вложенные поля, используйте функцию mergeс параметромdeep=true.
Была ли полезна эта страница?