Выражения и инструкции
Последнее выражение
«Выражения и инструкции» — бесплатный урок 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);
}Выражения вычисляются в значения
Арифметические операции, вызовы функций и литералы являются выражениями, поскольку создают значение.
52 + 3square(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 — локальная установка не требуется.
Все уроки этого курса
- Определение функций
- Выражения и инструкции
- Замыкания
- Fn, FnMut, FnOnce