Ámbito y Sombreado

RustRustBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprendemos sobre los enlaces de variables, su ámbito y el concepto de sombreado en Rust. Los enlaces de variables están confinados a un bloque, que es una colección de declaraciones encerradas entre llaves. Se proporcionan dos ejemplos para ilustrar estos conceptos. El primer ejemplo muestra cómo un enlace de variable declarado dentro de un bloque está limitado al ámbito de ese bloque y no es accesible fuera de él. El segundo ejemplo demuestra el sombreado de variables, donde se declara un nuevo enlace con el mismo nombre dentro de un bloque, lo que efectivamente sombrea el enlace externo.

Nota: Si el laboratorio no especifica un nombre de archivo, puede usar cualquier nombre de archivo que desee. Por ejemplo, puede usar main.rs, compilar y ejecutarlo con rustc main.rs &&./main.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL rust(("Rust")) -.-> rust/BasicConceptsGroup(["Basic Concepts"]) rust(("Rust")) -.-> rust/DataTypesGroup(["Data Types"]) rust(("Rust")) -.-> rust/FunctionsandClosuresGroup(["Functions and Closures"]) rust(("Rust")) -.-> rust/MemorySafetyandManagementGroup(["Memory Safety and Management"]) rust/BasicConceptsGroup -.-> rust/variable_declarations("Variable Declarations") rust/DataTypesGroup -.-> rust/string_type("String Type") rust/FunctionsandClosuresGroup -.-> rust/function_syntax("Function Syntax") rust/FunctionsandClosuresGroup -.-> rust/expressions_statements("Expressions and Statements") rust/MemorySafetyandManagementGroup -.-> rust/lifetime_specifiers("Lifetime Specifiers") subgraph Lab Skills rust/variable_declarations -.-> lab-99292{{"Ámbito y Sombreado"}} rust/string_type -.-> lab-99292{{"Ámbito y Sombreado"}} rust/function_syntax -.-> lab-99292{{"Ámbito y Sombreado"}} rust/expressions_statements -.-> lab-99292{{"Ámbito y Sombreado"}} rust/lifetime_specifiers -.-> lab-99292{{"Ámbito y Sombreado"}} end

Ámbito y Sombreado

Los enlaces de variables tienen un ámbito y están restringidos a existir dentro de un bloque. Un bloque es una colección de declaraciones encerradas entre llaves {}.

fn main() {
    // Este enlace existe dentro de la función main
    let long_lived_binding = 1;

    // Este es un bloque y tiene un ámbito más pequeño que la función main
    {
        // Este enlace solo existe dentro de este bloque
        let short_lived_binding = 2;

        println!("interno corto: {}", short_lived_binding);
    }
    // Fin del bloque

    // Error! `short_lived_binding` no existe en este ámbito
    println!("externo corto: {}", short_lived_binding);
    // FIXME ^ Comenta esta línea

    println!("externo largo: {}", long_lived_binding);
}

Además, el sombreado de variables está permitido.

fn main() {
    let shadowed_binding = 1;

    {
        println!("antes de ser sombreado: {}", shadowed_binding);

        // Este enlace *sombra* el externo
        let shadowed_binding = "abc";

        println!("sombreado en el bloque interno: {}", shadowed_binding);
    }
    println!("fuera del bloque interno: {}", shadowed_binding);

    // Este enlace *sombra* el enlace anterior
    let shadowed_binding = 2;
    println!("sombreado en el bloque externo: {}", shadowed_binding);
}

Resumen

¡Felicitaciones! Has completado el laboratorio de Ámbito y Sombreado. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.