Menu
Coddy logo textTech

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.

challenge icon

Défi

Facile

Cré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 playerLevel avec la valeur 25
  • Affichez cette variable playerLevel interne

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 ici
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fundamentals