Sygnatury indeksów
Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 78 z 80.
Typy map, takie jak {[string]: number}, poznaliśmy już w rozdziale o tabelach: to sygnatura indeksu: dowolny klucz tekstowy wskazuje wartość liczbową. Sprawdzają się świetnie, gdy podczas pisania kodu nie znasz jeszcze kluczy: liczniki, ustawienia, pamięci podręczne, wyniki — wszystko, co jest gromadzone w czasie działania programu.
type Counts = {[string]: number}
local counts: Counts = {}
counts["potion"] = 3 -- dozwolony jest dowolny klucz typu string
counts["sword"] = 1
counts["potion"] += 1 -- wartości są sprawdzane jako liczbyPodczas pracy z mapami ważne są dwa fakty dotyczące działania programu. Po pierwsze, odczytanie klucza, któremu nigdy nie przypisano wartości, zwraca nil: klasyczny wzorzec zliczania obsługuje tę sytuację za pomocą or, zamieniając „brak” na 0:
counts[item] = (counts[item] or 0) + 1Po drugie, pairs() iteruje po kluczach mapy w nieokreślonej kolejności: dwukrotne uruchomienie tego samego programu może odwiedzić klucze w różnej kolejności. Gdy wynik musi być przewidywalny, zbierz klucze w tablicy, posortuj je za pomocą table.sort i zamiast tego iteruj po posortowanej tablicy:
local keys: {string} = {}
for key in pairs(counts) do
table.insert(keys, key)
end
table.sort(keys)
for _, key in ipairs(keys) do
print(`{key}: {counts[key]}`)
endWyzwanie
ŁatwyPrzechowuj wyniki graczy, których imion nie znasz z góry.
- Napisz
type Scores = {[string]: number}i utwórzlocal scores: Scores = {}. - Dodaj punkty:
scores["mia"] = (scores["mia"] or 0) + 5, a następnie zrób to samo dla"leo", dodając3. - Wypisz
scores["mia"],scores["leo"]iscores["zed"].
Naciśnij Uruchom kod: wynik pokazuje 5, 3 i nil.
Spróbuj swoich sił
-- 1) type Scores = {[string]: number}, następnie local scores: Scores = {}
-- 2) dodaj 5 punktów dla "mia" i 3 dla "leo"
-- 3) wypisz mia, leo i zed
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ów8Enumy po luauowemu
Wzorzec enumów w LuauNumeryczne enumy z tabelamiEnumy tekstowe jako unieUżywanie enumów opartych na unii literałówZamrażanie stałych tabelPodsumowanie: enumy po luauowemu11Zaawansowane zagadnienia
Asercje typówStrażnicy typów z typeofTyp neverBezpieczeństwo wartości nil w trybie ścisłymSygnatury indeksówPowtórka: typy wartości konfiguracjiPowtórka: dostrajanie 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 mapyPoćwicz samodzielnie: Kompilator Luau online