Shadowing Parte 2
Parte da seção Fundamentals do Journey de Rust da Coddy — lição 48 de 75.
Quando você faz o shadowing de uma variável em Rust, a nova variável é completamente independente da original e precisa de sua própria declaração de mutabilidade. O shadowing não herda a mutabilidade da variável original.
let mut mut_val = 7;
// A variável original é mutável
{
let mut_val = 8;
// Esta é uma nova variável que sombreia a mut_val externa
mut_val = 50;
// Ocorreu um erro porque
// mut_val não é mutável
}
// Aqui está tudo bem
// mut_val não está congelada neste escopo
mut_val = 3;Para corrigir isso, podemos adicionar mut no escopo interno:
{
let mut mut_val = 8;
mut_val = 50;
}Desafio
InicianteCorrija o código fornecido para que ele seja executado sem erros.
Folha de consulta
Ao realizar o shadowing de uma variável em Rust, a nova variável é completamente independente e precisa de sua própria declaração de mutabilidade. O shadowing não herda a mutabilidade da variável original.
let mut mut_val = 7;
// A variável original é mutável
{
let mut_val = 8;
// Isso faz o shadowing do mut_val externo, mas é imutável
mut_val = 50;
// Erro: mut_val não é mutável neste escopo
}Para corrigir isso, adicione mut à variável que está fazendo o shadowing:
{
let mut mut_val = 8;
mut_val = 50; // Agora isso funciona
}Experimente você mesmo
fn main() {
// Corrija este código para fazê-lo funcionar
let number = 42;
{
let number = number;
println!("number is {}", number);
number = 100; // Isso causará um erro
println!("number is {}", number);
}
println!("number is {}", number);
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentals
4Operadores Parte 1
Operadores AritméticosOperador de MóduloAtalhos AritméticosOperadores de ComparaçãoComparação de Strings7Entrada e Saída Básica
Exibindo no ConsoleLendo a Entrada do UsuárioRevisão - Até 120Revisão - Verdadeiro ou Falso5Operadores Parte 2
Operadores Lógicos Parte 1Operadores Lógicos Parte 2Recapitulação - Lógica SimplesOperadores Lógicos Parte 33Variáveis Parte 2
Declaração de TipoConvenções de NomenclaturaInferência de TipoRecapitulação - Inicializar VariáveisConversão de Tipo9Laços
For sobre SériesLaço WhileBreakContinueLaços AninhadosRótulos de LoopLoop InfinitoRecapitulação - Entrada Dinâmica