Затенение, часть 2
Часть раздела Fundamentals путешествия по Rust на Coddy — урок 48 из 75.
Когда вы затеняете переменную в Rust, новая переменная становится полностью независимой от исходной, и ей требуется собственное объявление изменяемости. Затенение не наследует изменяемость исходной переменной.
let mut mut_val = 7;
// Исходная переменная является изменяемой
{
let mut_val = 8;
// Это новая переменная, которая затеняет внешнюю mut_val
mut_val = 50;
// Произошла ошибка, потому что
// mut_val не является изменяемой
}
// Здесь всё в порядке
// mut_val не заморожена в этой области видимости
mut_val = 3;Чтобы исправить это, мы можем добавить mut во внутренней области видимости:
{
let mut mut_val = 8;
mut_val = 50;
}Задание
НовичокИсправьте данный код, чтобы он работал без ошибок.
Шпаргалка
При затенении переменной в Rust новая переменная полностью независима и требует собственного объявления изменяемости. Затенение не наследует изменяемость от исходной переменной.
let mut mut_val = 7;
// Исходная переменная является изменяемой
{
let mut_val = 8;
// Это затеняет внешнюю mut_val, но является неизменяемым
mut_val = 50;
// Ошибка: mut_val не является изменяемой в этой области видимости
}Чтобы исправить это, добавьте mut к затеняющей переменной:
{
let mut mut_val = 8;
mut_val = 50; // Теперь это работает
}Попробуйте сами
fn main() {
// Исправьте этот код, чтобы он заработал
let number = 42;
{
let number = number;
println!("number is {}", number);
number = 100; // Это вызовет ошибку
println!("number is {}", number);
}
println!("number is {}", number);
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Fundamentals
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияАрифметические сокращенияОператоры сравненияСравнение строк7Основы ввода-вывода
Вывод в консольЧтение ввода пользователяПовторение — До 120Повторение — True или False5Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 38Приложение-калькулятор
Приветственное сообщениеПолучение чисел3Переменные. Часть 2
Объявление типаСоглашения об именованииВывод типовПовторение: инициализация переменныхПриведение типов9Циклы
Цикл For по последовательностиЦикл WhileОператор BreakОператор ContinueВложенные циклыМетки цикловБесконечный циклПовторение — Динамический ввод