Files
fz-lang/docs/ru/book/04_functions-and-recursion.md
T

1.7 KiB

Функции и рекурсия

Функция объявляется ключевым словом fn, именем, списком типизированных аргументов и, если функция возвращает значение, типом результата.

fn sum(uint a, uint b) uint
{
  return a + b;
}

Если функция ничего не возвращает, тип после закрывающей скобки можно опустить. Вызов записывается как name(arg1, arg2), аргументы передаются в порядке объявления.

Возврат

return завершает текущую функцию. Возвращаемое выражение должно быть совместимо с объявленным типом. Пустой return; используется в функции без результата. Возврат вне функции — ошибка компиляции.

Рекурсия

Функция может вызывать саму себя:

fn factorial(uint n) uint
{
  if (n <= 1)
    return 1;
  return n * factorial(n - 1);
}

Каждый вызов получает собственное окружение. ВМ хранит адрес возврата в стеке вызовов, а локальные значения — в стеке окружений.

При возврате объекта компилятор переносит его владение в родительское окружение.


Далее: Классы и объекты

Назад: Управление потоком