Czym jest metatabela?
Część sekcji Logika i przepływ programu ścieżki Lua w Coddy. Lekcja 16 z 54.
Metatablica to po prostu zwykła tablica Lua, ale pełni specjalną funkcję. Gdy dołączysz metatablicę do innej tablicy (nazwijmy ją „główną”), możesz zmienić sposób, w jaki ta główna tablica zachowuje się podczas wykonywania na niej określonych operacji.
Pomyśl o tym w ten sposób: zwykle, jeśli spróbujesz dodać do siebie dwie tablice za pomocą operatora +, Lua nie będzie wiedzieć, co zrobić, i zwróci błąd. Dzięki metatabeli możesz jednak określić, co oznacza dodawanie tablic. Możesz sprawić, że będzie dodawać odpowiadające sobie wartości, łączyć ich zawartość albo robić cokolwiek innego, co ma sens w Twoim programie.
Metatablice działają dzięki definiowaniu specjalnych funkcji zwanych metametodami. Metametody te mają określone nazwy zaczynające się od dwóch znaków podkreślenia, takich jak __add dla dodawania lub __index do wyszukiwania brakujących kluczy. Gdy Lua napotyka operację na tabeli, która ma metatablicę, sprawdza, czy metatablica zawiera odpowiadającą jej metametodę, i używa jej, aby ustalić, co powinno się wydarzyć.
Ta koncepcja otwiera możliwości, takie jak tworzenie niestandardowych typów danych z własnymi zachowaniami, implementowanie wzorców obiektowych, ochrona tabel przed niepożądanymi modyfikacjami i wiele więcej. W kolejnych lekcjach nauczysz się dołączać metatabele do tabel i używać metametod, aby dostosowywać ich zachowanie.
Spróbuj swoich sił
Ta lekcja nie zawiera wyzwania z kodem.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Zaawansowane iterowanie po tabelach
Iterowanie za pomocą pairs()Iterowanie za pomocą ipairs()pairs() a ipairs()Powtórka — karta postaci2Więcej funkcji biblioteki table
table.concat()Tworzenie tabel i unpack()table.sort()Sortowanie niestandardowe za pomocą funkcjiPodsumowanie — tablica najlepszych wyników5Projekt: silnik tekstowej gry przygodowej
Konfiguracja projektu: pokójŁączenie pokoiPoćwicz samodzielnie: Kompilator Lua online