Переменные, изменяемость и затенение
Разберитесь, как объявлять переменные, управлять их изменяемостью и использовать затенение для гибкого переопределения переменных.
«Переменные, изменяемость и затенение» — бесплатный урок Learn Rust Coding на CoddyKit. Это урок 1 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn Rust Coding, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn Rust Coding содержит 3 уроков всего.
Введение в переменные Rust
Добро пожаловать! В Rust переменные играют основополагающую роль в хранении данных. Представьте их как подписанные коробки, в которых хранятся сведения, необходимые вашей программе.
Rust уделяет большое внимание безопасности, и это начинается с работы переменных. Вы научитесь объявлять их, управлять их изменяемостью и даже хитроумно «переопределять» их.
Объявление переменных с помощью `let`
Чтобы создать переменную в Rust, используется ключевое слово let. Оно связывает имя со значением. Rust часто выводит тип автоматически, поэтому указывать его явно нужно не всегда.
Попробуйте запустить этот простой пример:
fn main() {
let apples = 5;
println!("I have {} apples.", apples);
}Неизменяемость переменных по умолчанию в Rust
Важная особенность Rust заключается в том, что переменные по умолчанию неизменяемы. После присваивания значения переменной изменить его нельзя.
Это может показаться ограничением, но такой подход помогает предотвращать ошибки, делает код безопаснее и облегчает его понимание, особенно при параллельном программировании.
Изменяемые переменные с помощью `mut`
Если значение переменной должно изменяться, явно сделайте её изменяемой, добавив ключевое слово mut перед именем переменной.
Так вы сообщаете Rust и другим разработчикам, что значение этой переменной предполагается изменять.
fn main() {
let mut score = 100;
println!("Initial score: {}", score);
score = 150; // We can change it now!
println!("New score: {}", score);
}Когда использовать `mut`
Хотя mut — мощный инструмент, рекомендуется использовать его только при необходимости. По умолчанию отдавайте предпочтение неизменяемости.
- Используйте
mutдля счётчиков, переменных состояния или значений, которые действительно нужно обновлять. - Если значение не меняется после первоначального присваивания, оставьте его неизменяемым — не добавляйте
mut. - Ясность: явная пометка переменной как
mutделает назначение кода понятнее.
Определение констант с помощью `const`
Константы — это особый вид неизменяемых переменных. Их объявляют с помощью ключевого слова const, а не let, и для них обязательно явно указывать тип.
Константам можно присваивать только константные выражения, но не результат вызова функции или значение, вычисляемое только во время выполнения.
fn main() {
const MAX_USERS: u32 = 10_000; // Type annotation is required!
println!("Max users allowed: {}", MAX_USERS);
}Переменные `let` и константы `const`
Вот основные различия между переменными let и константами const:
- Изменяемость: переменные
letпо умолчанию неизменяемы, но их можно сделать изменяемыми с помощьюmut. Константыconstвсегда неизменяемы. - Объявление: для
letиспользуетсяlet, а дляconst—const. - Аннотация типа: для переменных
letтип часто выводится автоматически. Для константconstтип обязательно указывать. - Область видимости: константы
constможно объявлять в любой области видимости, включая глобальную.
Знакомство с затенением имён
Rust позволяет объявить новую переменную с тем же именем, что и у предыдущей переменной. Это называется затенением.
Новая переменная «затеняет» старую: весь последующий код будет видеть значение новой переменной. Старая переменная по-прежнему существует в памяти, но напрямую обратиться к ней уже нельзя.
fn main() {
let x = 5;
println!("First x: {}", x); // Outputs 5
let x = x + 1; // 'x' is shadowed by a new 'x'
println!("Second x: {}", x); // Outputs 6
{ // Inner scope
let x = x * 2; // 'x' is shadowed again
println!("Inner x: {}", x); // Outputs 12
}
println!("Outer x: {}", x); // Outputs 6 (inner x is out of scope)
}Затенение для преобразования типа
Одно из полезных применений затенения — преобразовать значение переменной и даже её тип, сохранив то же имя. Это часто нужно, когда строку необходимо разобрать и преобразовать в число.
Вместо создания нового имени переменной (например, string_val, а затем num_val) можно повторно использовать то же имя.
fn main() {
let spaces = " ";
println!("Spaces string: '{}'", spaces);
// Shadow 'spaces' with a new variable that holds its length
let spaces = spaces.len();
println!("Spaces count: {}", spaces);
}Быстрая проверка: переменные и изменяемость
Рассмотрите следующий код Rust. Какое итоговое значение y будет выведено в консоль?
Итоги: переменные, изменяемость и затенение
Отличная работа! Вы изучили основы переменных в Rust:
- Используйте
letдля объявления переменных, которые по умолчанию неизменяемы. - Добавляйте
mut, чтобы сделать переменную изменяемой и разрешить изменение её значения. - Используйте
constдля объявления констант, которые всегда неизменяемы и требуют аннотации типа. - Затенение позволяет объявить новую переменную с тем же именем, заменив предыдущую. Это полезно для преобразования типов.
Далее мы подробно рассмотрим различные примитивные типы данных Rust!
Часто задаваемые вопросы
Урок «Переменные, изменяемость и затенение» бесплатный?
Да — полный текст урока «Переменные, изменяемость и затенение» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn Rust Coding, подпишись на CoddyKit PRO. Курс Learn Rust Coding содержит 3 уроков всего.
Чему я научусь в уроке «Переменные, изменяемость и затенение»?
Разберитесь, как объявлять переменные, управлять их изменяемостью и использовать затенение для гибкого переопределения переменных. Ты практикуешь Learn Rust Coding с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn Rust Coding?
Предыдущий опыт не требуется. Learn Rust Coding на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 3.
Сколько времени занимает урок «Переменные, изменяемость и затенение»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn Rust Coding?
Да. Каждый урок Learn Rust Coding включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Переменные, изменяемость и затенение
- Примитивные типы данных и операторы
- Функции и управление потоком выполнения