Zakres i bloki
Część sekcji Podstawy ścieżki Lua w Coddy. Lekcja 86 z 90.
W Lua możesz tworzyć nowe zakresy widoczności w dowolnym miejscu kodu za pomocą bloków do...end. Te bloki pozwalają dokładnie kontrolować, gdzie można uzyskać dostęp do zmiennych lokalnych, zapewniając precyzyjną kontrolę nad zakresem widoczności zmiennych.
Oto jak możesz utworzyć nowy zakres za pomocą bloku do...end:
local outerVar = "I'm outside"
do
local innerVar = "I'm inside"
print(outerVar) -- To działa
print(innerVar) -- To też działa
end
print(outerVar) -- To działa
print(innerVar) -- To spowodowałoby błąd!Potężną cechą zakresu jest to, że w różnych blokach możesz mieć zmienne lokalne o tej samej nazwie, a one pozostają całkowicie od siebie niezależne:
local name = "Alice"
do
local name = "Bob" -- Inna zmienna!
print(name) -- Wypisuje "Bob"
end
print(name) -- Wypisuje "Alice"Każdy blok do...end tworzy własne odizolowane środowisko dla zmiennych lokalnych. Zmienne zadeklarowane wewnątrz bloku nie mogą wydostać się do zakresu zewnętrznego, natomiast zmienne z zakresów zewnętrznych są dostępne wewnątrz bloków zagnieżdżonych.
Wyzwanie
ŁatwyUtwórz zagnieżdżone bloki do...end, aby pokazać, że zmienne lokalne o tej samej nazwie pozostają całkowicie oddzielne w różnych zakresach.
Najpierw utwórz zmienną lokalną o nazwie playerLevel z wartością 10 w zakresie zewnętrznym i ją wypisz.
Następnie utwórz blok do...end, a w nim:
- Zadeklaruj nową zmienną lokalną o nazwie
playerLevelz wartością25 - Wypisz tę wewnętrzną zmienną
playerLevel
Po zakończeniu wewnętrznego bloku ponownie wypisz zewnętrzną zmienną playerLevel, aby pokazać, że pozostała niezmieniona.
To pokazuje, że zmienne lokalne o identycznych nazwach w różnych zakresach są całkowicie niezależne — zmienna wewnętrzna nie wpływa na zewnętrzną.
Spróbuj swoich sił
-- TODO: Napisz tutaj swój kodTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory 2: relacyjne i logiczne
Operatory równościOperatory relacyjneOperator „and”Operator „or”Operator „not”Ewaluacja z krótkim spięciemWartości prawdziwe i fałszywePodsumowanie – prosta logika7Podstawy logiki warunkowej
Instrukcja if-thenInstrukcja if-then-elseInstrukcja elseifPowtórzenie — skrzynia skarbów10Tabele, część 1: styl listy
Czym jest tabela?Tworzenie tabeliDostęp do elementów według indeksuModyfikowanie elementów według indeksuOperator długości '#'table.insert()table.remove()Powtórzenie — zarządzanie członkami drużyny13Projekt: Prosty sklep z eliksirami
Konfiguracja projektuDodawanie eliksiru2Zmienne i typy danych
Czym jest zmienna?LiczbyŁańcuchy znakówWartości logiczneWartość „nil”Funkcja type()Konwencje nazewnictwaPowtórzenie — profil postaci5Podstawowe wyjście
Wyświetlanie literałówWyświetlanie zmiennychWyświetlanie wielu wartościŁączenie ciągów znaków i zmiennychFunkcja tostring()Dane wejścioweRzutowanie typówPowtórka — raport o statusiePowtórka — do 1208Podstawy manipulacji ciągami znaków
string.len()string.upper i string.lowerstring.sub()string.rep()string.find()Podsumowanie – formatuj nazwę użytkownika11Tabele 2: w stylu słownika
Pary klucz-wartośćTworzenie tabel w stylu słownikaDostęp — notacja nawiasowaDostęp za pomocą notacji kropkowejDodawanie i modyfikowanie parUsuwanie par za pomocą nilPodsumowanie — właściwości elementów14Zakres zmiennych
Zmienne globalneZmienne lokalneDlaczego używać zmiennych lokalnych?Zakres i blokiPowtórka — łamigłówka o zakresie3Operatory 1: Arytmetyka i konkatenacja
Operatory arytmetyczneOperator moduloOperator potęgowaniaŁączenie ciągów znakówKolejność wykonywania operatorówPowtórka – proste obliczenia6Projekt: wyświetlanie statystyk postaci
Wiadomość powitalnaDeklarowanie statystyk postaci9Podstawy funkcji
Deklarowanie funkcjiWywoływanie funkcjiFunkcje z parametramiFunkcje z wieloma parametramiInstrukcja „return”Powtórzenie — kalkulator polaPoćwicz samodzielnie: Kompilator Lua online