Portée et blocs
Fait partie de la section Fundamentals du Journey Lua de Coddy — leçon 86 sur 90.
En Lua, vous pouvez créer de nouvelles portées n'importe où dans votre code en utilisant des blocs do...end. Ces blocs vous permettent de contrôler exactement où vos variables locales peuvent être accédées, vous offrant un contrôle précis sur la portée des variables.
Voici comment vous pouvez créer une nouvelle portée avec un bloc do...end :
local outerVar = "I'm outside"
do
local innerVar = "I'm inside"
print(outerVar) -- Cela fonctionne
print(innerVar) -- Cela fonctionne aussi
end
print(outerVar) -- Cela fonctionne
print(innerVar) -- Cela provoquerait une erreur !L'aspect puissant de la portée est que vous pouvez avoir des variables locales avec le même nom dans différents blocs, et elles restent complètement séparées :
local name = "Alice"
do
local name = "Bob" -- Variable différente !
print(name) -- Affiche "Bob"
end
print(name) -- Affiche "Alice"Chaque bloc do...end crée son propre environnement isolé pour les variables locales. Les variables déclarées à l'intérieur d'un bloc ne peuvent pas s'échapper vers la portée externe, tandis que les variables des portées externes peuvent être consultées depuis l'intérieur des blocs internes.
Défi
FacileCréez des blocs do...end imbriqués pour démontrer comment des variables locales portant le même nom restent complètement séparées dans des portées différentes.
Tout d'abord, créez une variable locale nommée playerLevel avec la valeur 10 dans la portée externe et affichez-la.
Ensuite, créez un bloc do...end et à l'intérieur de celui-ci :
- Déclarez une nouvelle variable locale également nommée
playerLevelavec la valeur25 - Affichez cette variable
playerLevelinterne
Une fois le bloc interne terminé, affichez à nouveau la variable playerLevel externe pour montrer qu'elle est restée inchangée.
Cela démontre que les variables locales ayant des noms identiques dans des portées différentes sont complètement indépendantes - la variable interne n'affecte pas la variable externe.
Aide-mémoire
Créez de nouvelles portées n'importe où dans votre code en utilisant des blocs do...end pour contrôler la portée des variables :
local outerVar = "I'm outside"
do
local innerVar = "I'm inside"
print(outerVar) -- Cela fonctionne
print(innerVar) -- Cela fonctionne aussi
end
print(outerVar) -- Cela fonctionne
print(innerVar) -- Cela provoquerait une erreur !Les variables locales portant le même nom dans différents blocs restent complètement distinctes :
local name = "Alice"
do
local name = "Bob" -- Variable différente !
print(name) -- Affiche "Bob"
end
print(name) -- Affiche "Alice"Les variables déclarées à l'intérieur d'un bloc ne peuvent pas s'échapper vers la portée externe, tandis que les variables des portées externes sont accessibles depuis les blocs internes.
Essayez vous-même
-- À FAIRE : Écrivez votre code iciCette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fundamentals
4Opérateurs 2 : Relationnels et Logique
Opérateurs d'égalitéOpérateurs relationnelsL'opérateur 'and'L'opérateur 'or'L'opérateur 'not'Évaluation court-circuitValeurs Truthy et FalsyRécapitulatif - Logique simple7Logique conditionnelle de base
L'instruction if-thenL'instruction if-then-elseL'instruction elseifRécapitulatif - Le coffre au trésor10Tables Partie 1 : Style Liste
Qu'est-ce qu'une Table ?Créer une TableAccéder aux éléments par indexModifier des éléments par indexL'opérateur de longueur '#'table.insert()table.remove()Récapitulatif - Gérer les membres du groupe13Projet : Boutique de potions simple
Configuration du projetAjouter une potion2Variables et types de données
Qu'est-ce qu'une variable ?Les nombresLes chaînes de caractèresLes booléensLa valeur 'nil'La fonction type()Conventions de nommageRécapitulatif - Profil de personnage5Affichage de base
Afficher des littérauxAfficher des variablesAfficher plusieurs valeursCombiner des chaînes et des variablesLa fonction tostring()EntréeLe CastRécapitulatif - Rapport d'étatRécapitulatif - Jusqu'à 1208Bases de la manipulation de chaînes
string.len()string.upper et string.lowerstring.sub()string.rep()string.find()Récapitulatif - Formater le nom d'utilisateur11Tables 2 : Style dictionnaire
Paires clé-valeurCréer des tables de style dictionnaireAccès - Notation par crochetsAccès avec la notation par pointAjouter et modifier des pairesSupprimer des paires avec nilRécapitulatif - Propriétés des éléments14Portée des variables
Variables globalesVariables localesPourquoi utiliser des variables locales ?Portée et blocsRécapitulatif - Énigme de portée3Opérateurs 1 Arithmétique & Conc.
Opérateurs arithmétiquesOpérateur moduloOpérateur d'exponentiationConcaténation de chaînesPriorité des opérateursRécapitulatif - Calculs simples6Projet : Affichage des stats du personnage
Message de bienvenueDéclarer les statistiques du personnage9Bases des fonctions
Déclarer une fonctionAppeler une fonctionFonctions avec paramètresFonctions avec plusieurs paramètresL'instruction 'return'Récapitulatif - Calculateur d'aire