Определение функций
Параметры и возвращаемые значения
«Определение функций» — бесплатный урок Learn Rust Coding на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn Rust Coding, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn Rust Coding содержит 4 уроков всего.
Объявление функции
Функция определяется с помощью ключевого слова fn, имени, круглых скобок и тела в фигурных скобках.
По соглашению Rust использует snake_case для имён функций.
fn main() {
greet();
}
fn greet() {
println!("Hello from a function!");
}Функция main
Каждая исполняемая программа на Rust начинается с fn main(). Это точка входа, которую среда выполнения вызывает первой.
fn main() {
println!("Program starts here");
}Параметры
Функции могут принимать параметры. Для каждого параметра необходимо указать его тип после двоеточия.
fn main() {
print_number(7);
}
fn print_number(x: i32) {
println!("The number is {}", x);
}Несколько параметров
Разделяйте несколько параметров запятыми. Для каждого параметра нужна собственная аннотация типа.
fn main() {
describe("Rust", 2010);
}
fn describe(name: &str, year: i32) {
println!("{} was released in {}", name, year);
}Возвращаемые значения
Укажите возвращаемый тип после стрелки ->. Функция возвращает значение этого типа.
Последнее выражение (без точки с запятой) становится возвращаемым значением.
fn main() {
let result = square(5);
println!("square is {}", result);
}
fn square(n: i32) -> i32 {
n * n
}Ключевое слово return
Также можно выполнить досрочный возврат с помощью ключевого слова return. Это полезно для проверок условий.
fn main() {
println!("{}", abs_value(-8));
}
fn abs_value(n: i32) -> i32 {
if n < 0 {
return -n;
}
n
}Объединение параметров и возвращаемых значений
Функция обычно принимает входные данные и создаёт выходные. Здесь мы складываем два числа.
fn main() {
let total = add(3, 4);
println!("total {}", total);
}
fn add(a: i32, b: i32) -> i32 {
a + b
}Вызов функций из функций
Функции могут вызывать другие функции, позволяя строить более сложное поведение из небольших повторно используемых частей.
fn main() {
println!("{}", double_then_add(5));
}
fn double(n: i32) -> i32 { n * 2 }
fn double_then_add(n: i32) -> i32 {
double(n) + 1
}Возврат других типов
Функции могут возвращать значения любого типа: строки, логические значения, кортежи и многое другое.
fn main() {
let (sum, product) = compute(3, 4);
println!("sum {} product {}", sum, product);
}
fn compute(a: i32, b: i32) -> (i32, i32) {
(a + b, a * b)
}Функции без возвращаемого значения
Функция без стрелки возвращает единичный тип (). Она выполняет работу посредством побочных эффектов, например вывода текста.
fn main() {
log_message("saving file");
}
fn log_message(msg: &str) {
println!("[LOG] {}", msg);
}Порядок не имеет значения
В отличие от некоторых языков, в Rust можно вызвать функцию, определённую позже в файле. Компилятор видит все функции до начала выполнения.
fn main() {
println!("{}", helper());
}
fn helper() -> i32 {
99
}Краткая проверка
Вспомните, как функции Rust возвращают значения.
Повторение
Функции в Rust:
- Определяются с помощью
fn name(params) -> ReturnType { ... }. - Для параметров нужны явные типы.
- Последнее выражение (без точки с запятой) является возвращаемым значением; также можно досрочно использовать
return. - При отсутствии возвращаемого типа функция возвращает
().
fn main() {
let area = rectangle_area(4, 6);
println!("area {}", area);
}
fn rectangle_area(w: i32, h: i32) -> i32 {
w * h
}Часто задаваемые вопросы
Урок «Определение функций» бесплатный?
Да — полный текст урока «Определение функций» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn Rust Coding, подпишись на CoddyKit PRO. Курс Learn Rust Coding содержит 4 уроков всего.
Чему я научусь в уроке «Определение функций»?
Параметры и возвращаемые значения Ты практикуешь Learn Rust Coding с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn Rust Coding?
Предыдущий опыт не требуется. Learn Rust Coding на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Определение функций»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn Rust Coding?
Да. Каждый урок Learn Rust Coding включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Определение функций
- Выражения и инструкции
- Замыкания
- Fn, FnMut, FnOnce