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);
}
Каждый вызов получает собственное окружение. ВМ хранит адрес возврата в стеке вызовов, а локальные значения — в стеке окружений.
При возврате объекта компилятор переносит его владение в родительское окружение.
Далее: Классы и объекты
Назад: Управление потоком