0Pricing
Learn Rust Coding · Урок

Определение функций

Параметры и возвращаемые значения

«Определение функций» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Определение функций
  2. Выражения и инструкции
  3. Замыкания
  4. Fn, FnMut, FnOnce
← Назад к Learn Rust Coding