0Pricing
Learn Rust Coding · Урок

Выражения и инструкции

Последнее выражение

«Выражения и инструкции» — бесплатный урок Learn Rust Coding на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn Rust Coding, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn Rust Coding содержит 4 уроков всего.

Инструкции и выражения

Rust различает два вида кода:

  • Инструкции выполняют действие и не возвращают значение.
  • Выражения вычисляются в значение.

Это различие определяет способ возврата значений из функций.

fn main() {
    let x = 5;      // a let statement
    let y = x + 1;  // x + 1 is an expression
    println!("{}", y);
}

let — это инструкция

Связывание с помощью let является инструкцией. Оно не возвращает значение, поэтому нельзя написать let a = (let b = 6);.

fn main() {
    let a = 6;
    // let c = (let d = 6); // error: let is not an expression
    println!("{}", a);
}

Выражения вычисляются в значения

Арифметические операции, вызовы функций и литералы являются выражениями, поскольку создают значение.

  • 5
  • 2 + 3
  • square(4)
fn main() {
    let v = 2 + 3 * 4;
    println!("{}", v);
}

Блоки являются выражениями

Блок { ... } сам является выражением. Его значением становится последнее выражение внутри, если после него нет точки с запятой.

fn main() {
    let y = {
        let x = 3;
        x + 1
    };
    println!("y is {}", y);
}

Точка с запятой имеет значение

Добавление точки с запятой превращает выражение в инструкцию, отбрасывая его значение.

  • x + 1 — выражение, даёт значение.
  • x + 1; — инструкция, даёт ().
fn main() {
    let y = {
        let x = 3;
        x + 1   // no semicolon: this is the block's value
    };
    println!("{}", y);
}

Возврат последнего выражения

В функции последнее выражение без точки с запятой становится возвращаемым значением. Это идиоматичный стиль Rust.

fn main() {
    println!("{}", five());
}

fn five() -> i32 {
    5
}

Точка с запятой прерывает возврат

Если случайно добавить точку с запятой в последнюю строку, функция вернёт () вместо нужного значения — это распространённая ошибка начинающих.

fn main() {
    println!("{}", plus_one(10));
}

fn plus_one(n: i32) -> i32 {
    n + 1   // correct: no semicolon
}

if как выражение

Поскольку if является выражением, его результат можно присвоить переменной. Обе ветви должны возвращать значения одного типа.

fn main() {
    let condition = true;
    let number = if condition { 5 } else { 6 };
    println!("number is {}", number);
}

loop как выражение

loop может возвращать значение через break. Значение после break становится результатом цикла.

fn main() {
    let mut counter = 0;
    let result = loop {
        counter += 1;
        if counter == 10 {
            break counter * 2;
        }
    };
    println!("result {}", result);
}

match как выражение

match также является выражением. Каждая ветвь создаёт значение, а значением результата становится значение выбранной ветви.

fn main() {
    let n = 2;
    let label = match n {
        1 => "one",
        2 => "two",
        _ => "many",
    };
    println!("{}", label);
}

Объединяем всё вместе

Рассмотрение блоков и управляющих конструкций как выражений делает Rust лаконичным: вычисление и возврат выполняются за один плавный шаг.

fn main() {
    let score = 85;
    let grade = if score >= 90 { 'A' } else if score >= 80 { 'B' } else { 'C' };
    println!("grade {}", grade);
}

Краткая проверка

Что происходит с выражением при добавлении точки с запятой?

Повторение

Выражения и инструкции в Rust:

  • Инструкции (например, let) выполняют работу, но не возвращают значения.
  • Выражения вычисляются в значение.
  • Блоки, if, match и loop являются выражениями.
  • Последнее выражение без точки с запятой является возвращаемым значением.
fn main() {
    let x = { let a = 2; a * a };
    let y = if x > 3 { "big" } else { "small" };
    println!("{} {}", x, y);
}

Часто задаваемые вопросы

Урок «Выражения и инструкции» бесплатный?

Да — полный текст урока «Выражения и инструкции» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn Rust Coding, подпишись на CoddyKit PRO. Курс Learn Rust Coding содержит 4 уроков всего.

Чему я научусь в уроке «Выражения и инструкции»?

Последнее выражение Ты практикуешь Learn Rust Coding с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn Rust Coding?

Предыдущий опыт не требуется. Learn Rust Coding на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Выражения и инструкции»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn Rust Coding?

Да. Каждый урок Learn Rust Coding включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

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