Вызов функции

Выражение вызова функции вызывает встроенные функции VRL.

Синтаксис

Список принятых обозначений

В данном разделе при описании выражений приняты следующие обозначения:

  • Элементы выражений разделены тильдой.

  • Круглые скобки служат для группировки элементов выражения.

  • Если в выражении используется литерал скобок или других символов, они заключаются в кавычки: "(". "NEWLINE" обозначает перевод строки.

  • Квантификаторы после элементов и групп обозначают количество повторений:

    • ? — элемент необязателен, может отсутствовать в выражении;

    • + — элемент обязателен и может повторяться в выражении несколько раз;

    • * — элемент может отсутствовать или повторяться несколько раз.

function ~ abort? ~ "(" ~ arguments? ~ ")" ~ closure?
Элемент Описание

function

abort

Прерывание. Подробности приведены в разделе Прерывание.

arguments

Выражения, разделенные запятыми, которые могут дополнительно предваряться документированным именем. Подробности приведены в разделе Примеры способов передачи аргументов в функции.

closure

Замыкание. Подробности приведены в разделе Замыкание.

Используйте VRL-песочницу, чтобы проверить работу программы.

Примеры способов передачи аргументов в функции

Пример позиционного вызова функции

Исходный код
split("hello, world!", ", ")
Результат
[
  "hello",
  "world!"
]

Пример вызова функции с упорядоченными именованными аргументами

Исходный код
split("hello, world!", pattern: ", ")
Результат
[
  "hello",
  "world!"
]

Пример вызова функции с неупорядоченными именованными аргументами

Исходный код
split(pattern: ", ", value: "hello, world!")
Результат
[
  "hello",
  "world!"
]

Замыкание

Замыкание — необязательный фрагмент кода, выполняемый при вызове функции. Замыкание применяется преимущественно в функциях, выполняющих итерации по коллекциям.

Пример синтаксиса:

for_each([]) -> |index, value| {
  ...
}

К блокам замыкания применяются те же правила области видимости, что и к обычным блокам. Они могут использовать любые переменные, определенные в родительских областях видимости, а также сохранять изменения в этих переменных. Однако любые новые переменные, созданные внутри блока замыкания, недоступны за его пределами.

Прерывание

Прерывание — литерал !, который можно использовать с функциями, возвращающими ошибки, для прерывания программы, если функция возвращает ошибку:

result = f!()

В противном случае ошибки должны обрабатываться:

result, err = f()

Отсутствие обработки ошибок от функций, которые могут возвращать ошибку, приводит к ошибкам на этапе компиляции. Обратитесь к разделу Справочник ошибок для дополнительной информации.

Примеры вызова функций с прерыванием и без прерываний

Пример вызова функции, не возвращающей ошибок

Исходный код
split("apples and pears and bananas", " and ")
Результат
["apples","pears","bananas"]

Примеры вызова функции, возвращающей ошибки

Исходное событие
{
  "log": {
    "message": "apples and pears and bananas"
  }
}
Исходный код
# Компилятор не может определить тип аргумента, поэтому нужно выполнить обработку ошибки.
split!(.message, " and ")
Результат
["apples","pears","bananas"]

Была ли полезна эта страница?

Обратная связь