Zakres i bloki
Część sekcji Podstawy ścieżki Lua w Coddy. Lekcja 86 z 90.
W Lua możesz tworzyć nowe zakresy w dowolnym miejscu kodu za pomocą bloków do...end. Bloki te pozwalają dokładnie kontrolować, gdzie można uzyskać dostęp do zmiennych lokalnych, dając precyzyjną kontrolę nad zakresem zmiennych.
Oto, jak możesz utworzyć nowy zakres widoczności 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) -- Wypisuje nil: innerVar istnieje tylko wewnątrz blokuPotężną cechą zakresu jest to, że w różnych blokach możesz mieć zmienne lokalne o tej samej nazwie, a mimo to pozostają one całkowicie niezależne:
local name = "Alice"
do
local name = "Bob" -- Inna zmienna!
print(name) -- Wyświetla "Bob"
end
print(name) -- Wyświetla "Alice"Każdy blok do...end tworzy własne odizolowane środowisko dla zmiennych lokalnych. Zmienne zadeklarowane wewnątrz bloku nie mogą wydostać się do zewnętrznego zakresu, natomiast zmienne z zewnętrznych zakresów są dostępne z poziomu bloków wewnętrznych.
Wyzwanie
ŁatwyUtwórz zagnieżdżone bloki do...end, aby pokazać, że zmienne lokalne o tej samej nazwie pozostają całkowicie odrębne w różnych zakresach.
Najpierw utwórz zmienną lokalną o nazwie playerLevel z wartością 10 w zewnętrznym zakresie i ją wypisz.
Następnie utwórz blok do...end, a w jego wnętrzu:
- Zadeklaruj nową zmienną lokalną, również o nazwie
playerLevel, z 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