0Pricing
Learn Rust Coding · Урок

Переменные, изменяемость и затенение

Разберитесь, как объявлять переменные, управлять их изменяемостью и использовать затенение для гибкого переопределения переменных.

«Переменные, изменяемость и затенение» — бесплатный урок 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 — локальная установка не требуется.

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

  1. Переменные, изменяемость и затенение
  2. Примитивные типы данных и операторы
  3. Функции и управление потоком выполнения
← Назад к Learn Rust Coding