Тень имени в Rust
Тень появляется, когда во вложенном блоке снова объявляют имя, которое уже есть снаружи. Внутреннее объявление с тем же именем закрывает внешнее до конца блока. Внутри скобок команды читают внутреннюю переменную, после скобок снова видна внешняя.
Сначала имя получает одно число, затем во вложенном блоке то же имя объявляют снова:
let n = 1;
{
let n = 2;
println!("{}", n);
}
println!("{}", n);
Сначала на экране 2, затем 1.
Снаружи блока остается старое значение
внешнего n.
Тень работает и внутри ветки условия. Внешнее имя снова читается после закрывающей скобки ветки:
let flag = 0;
if true {
let flag = 1;
println!("{}", flag);
}
println!("{}", flag);
Дан следующий код:
let x = 5;
{
let x = 9;
println!("{}", x);
}
println!("{}", x);
Скажите, что выведется.
Даны переменные:
let m = 0;
Во вложенном блоке объявите m заново
со значением 7, выведите его внутри
блока, затем выведите m снаружи.
Скажите оба числа на экране.
Дан следующий код:
let rate = 2;
{
let rate = rate + 3;
println!("{}", rate);
}
println!("{}", rate);
Скажите, что выведется.