Вызов функции
Выражение вызова функции вызывает встроенные функции VRL.
Синтаксис
Список принятых обозначений
В данном разделе при описании выражений приняты следующие обозначения:
-
Элементы выражений разделены тильдой.
-
Круглые скобки служат для группировки элементов выражения.
-
Если в выражении используется литерал скобок или других символов, они заключаются в кавычки:
"("."NEWLINE"обозначает перевод строки. -
Квантификаторы после элементов и групп обозначают количество повторений:
-
?— элемент необязателен, может отсутствовать в выражении; -
+— элемент обязателен и может повторяться в выражении несколько раз; -
*— элемент может отсутствовать или повторяться несколько раз.
-
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"]
Была ли полезна эта страница?