Tablice generyczne
Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 64 z 80.
Typy generyczne stają się naprawdę przydatne, gdy w grę wchodzą tablice. Tablice typowane zapisujesz już jako {number} lub {string}. W funkcji generycznej typem elementu może być po prostu T, a {T} oznacza „tablicę dowolnego typu, którym okaże się T”.
Oto klasyczny przykład: pobranie pierwszego elementu z dowolnej tablicy:
local function first<T>(items: {T}): T?
return items[1]
endPrzekaż {string}, a weryfikator wywnioskuje T = string, więc wynikiem będzie ciąg znaków. Przekaż {number}, a wynikiem będzie liczba. Jedna funkcja zastępuje całą rodzinę kopii przeznaczonych dla poszczególnych typów.
Przyjrzyj się uważnie typowi zwracanej wartości: to T?, a nie T. Tablica może być pusta, a wtedy items[1] ma wartość nil: poznany wcześniej typ opcjonalny uczciwie to sygnalizuje: „T lub nil”. Weryfikator podpowie, że przed użyciem wyniku należy obsłużyć przypadek nil — właśnie takiego wykrywania błędów oczekujesz od języka z typami.
Wyzwanie
ŁatwyPobierz pierwszy element dowolnej tablicy.
- Napisz
local function first<T>(items: {T}): T?, która zwracaitems[1]. - Zadeklaruj
local fruits: {string} = {"apple", "banana"}orazlocal empty: {number} = {}. - Wypisz
first(fruits), a następniefirst(empty).
Naciśnij Uruchom kod: wynik zawiera apple i nil.
Spróbuj swoich sił
-- 1) first<T>(items: {T}): T?
-- 2) fruits: {string} i pusty {number}
-- 3) wypisz pierwszy element z każdego
Wszystkie lekcje w sekcji Wprowadzenie do Luau
1Pierwsze kroki z Luau
Czym jest Luau?Dlaczego warto używać Luau?Twój pierwszy kod w LuauSprawdzanie typów i tryby błędówPodsumowanie: Wprowadzenie do Luau4Praca z funkcjami
Typowanie parametrów i wartości zwracanychTypowanie funkcji anonimowychFunkcje niezwracające wartościParametry opcjonalneDomyślne wartości parametrówWartości domyślne dla typów BooleanFunkcje wariadyczneDefiniowanie typów funkcjiPodsumowanie: funkcje z typami2Podstawowe typy
Number, String i BooleanTyp 'any': wyjście awaryjneTyp 'unknown'Nil i typy opcjonalneInferencja typów w praktyceJawne adnotacje typówPowtórka: ćwiczenia z podstawowych typów5Aliasy, typy sumy i przekroju
Aliasy typów dla typów prostychTypy sumyPraca z typami sumyTypy literałoweTypy przekrojuŁączenie aliasów typówPodsumowanie: zaawansowane kombinacje typów3Typowane tabele: tablice i mapy
Typowane tabliceDodawanie i odczytywanie elementówCzym jest typ mapy?Deklarowanie i uzyskiwanie dostępu do mapIterowanie po tabelachTabele o mieszanej strukturzeOdczytywanie siatkiTworzenie siatkitable.unpackPodsumowanie: tablice i mapy6Typowanie kształtów tabel
Adnotacje kształtów w miejscuAliasy typów dla kształtówWłaściwości opcjonalneKształty a luźne tabeleRozszerzanie kształtówDodawanie metod do kształtówSelf i metody z dwukropkiemPodsumowanie: definiowanie kształtów tabel9Typy generyczne: pierwsze spojrzenie
Problem, który rozwiązują typy generyczneGeneryczna funkcja identycznościowaKorzystanie z funkcji generycznejTablice generyczneGeneryczne aliasy typówPodsumowanie: funkcje generycznePoćwicz samodzielnie: Kompilator Luau online