Menu
CoddyTech

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]
end

Przekaż {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.

challenge icon

Wyzwanie

Łatwy

Pobierz pierwszy element dowolnej tablicy.

  1. Napisz local function first<T>(items: {T}): T?, która zwraca items[1].
  2. Zadeklaruj local fruits: {string} = {"apple", "banana"} oraz local empty: {number} = {}.
  3. Wypisz first(fruits), a następnie first(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

Poćwicz samodzielnie: Kompilator Luau online