Функции
// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0
fn gcd(a: u32, b: u32) -> u32 {
if b > 0 { gcd(b, a % b) } else { a }
}
fn main() {
dbg!(gcd(143, 52));
}
This slide should take about 3 minutes.
- В объявлении функции за каждым параметром следует его тип (в отличие от некоторых языков программирования), затем тип возвращаемого значения.
- Последнее выражение в теле функции (или любого блока) становится возвращаемым значением. Просто опустите
;в конце выражения. Ключевое словоreturnможно использовать для раннего возврата, но форма «голого значения» идиоматична в конце функции (перепишитеgcdс использованиемreturn). - Некоторые функции не возвращают значения и возвращают «тип unit»
(). Компилятор выведет это, если возвращаемый тип не указан. - Перегрузка не поддерживается: каждая функция имеет единственную реализацию.
- Функция всегда принимает фиксированное количество параметров. Аргументы по умолчанию не поддерживаются. Для функций с переменным числом аргументов можно использовать макросы.
- Всегда принимает один набор типов параметров. Эти типы могут быть обобщёнными; об этом поговорим позже.