Portée et ombrage

RustRustBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons apprendre les liaisons de variables, leur portée et le concept d'ombrage en Rust. Les liaisons de variables sont limitées à un bloc, qui est une collection d'instructions entourées de parenthèses. Deux exemples sont fournis pour illustrer ces concepts. Le premier exemple montre comment une liaison de variable déclarée à l'intérieur d'un bloc est limitée à la portée de ce bloc et n'est pas accessible en dehors de celui-ci. Le second exemple démontre l'ombrage de variables, où une nouvelle liaison avec le même nom est déclarée à l'intérieur d'un bloc, ombrageant ainsi effectivement la liaison externe.

Note : Si le laboratoire ne spécifie pas de nom de fichier, vous pouvez utiliser n'importe quel nom de fichier que vous voulez. Par exemple, vous pouvez utiliser main.rs, le compiler et l'exécuter avec 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{{"Portée et ombrage"}} rust/string_type -.-> lab-99292{{"Portée et ombrage"}} rust/function_syntax -.-> lab-99292{{"Portée et ombrage"}} rust/expressions_statements -.-> lab-99292{{"Portée et ombrage"}} rust/lifetime_specifiers -.-> lab-99292{{"Portée et ombrage"}} end

Portée et ombrage

Les liaisons de variables ont une portée et sont contraintes à exister dans un bloc. Un bloc est une collection d'instructions entourées de parenthèses {}.

fn main() {
    // Cette liaison existe dans la fonction principale
    let long_lived_binding = 1;

    // Ceci est un bloc, et a une portée plus restreinte que la fonction principale
    {
        // Cette liaison n'existe que dans ce bloc
        let short_lived_binding = 2;

        println!("inner short: {}", short_lived_binding);
    }
    // Fin du bloc

    // Erreur! `short_lived_binding` n'existe pas dans cette portée
    println!("outer short: {}", short_lived_binding);
    // FIXME ^ Commenter cette ligne

    println!("outer long: {}", long_lived_binding);
}

De plus, l'ombrage de variables est autorisé.

fn main() {
    let shadowed_binding = 1;

    {
        println!("before being shadowed: {}", shadowed_binding);

        // Cette liaison *ombrage* la liaison externe
        let shadowed_binding = "abc";

        println!("shadowed in inner block: {}", shadowed_binding);
    }
    println!("outside inner block: {}", shadowed_binding);

    // Cette liaison *ombrage* la liaison précédente
    let shadowed_binding = 2;
    println!("shadowed in outer block: {}", shadowed_binding);
}

Sommaire

Félicitations! Vous avez terminé le laboratoire Portée et ombrage. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.