Menu
CoddyTech

Korzystanie z funkcji generycznej

Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 63 z 80.

Nigdy nie mówisz identity, czym jest T: sprawdzarka sama to ustala. To jest wnioskowanie o typach: przy każdym wywołaniu Luau sprawdza argument i ustala T:

local word = identity("Luau")   -- T wywnioskowano jako string
local count = identity(12)      -- T wywnioskowano jako number
local flag = identity(false)    -- T wywnioskowano jako boolean

Każde wywołanie jest niezależne: T może być ciągiem znaków w jednym wierszu, a liczbą w następnym. Wywnioskowany wynik jest równie bezpieczny jak ręcznie wpisana adnotacja: dla sprawdzarki word jest typu string, z pełnym autouzupełnianiem i sprawdzaniem błędów.

Jest jedna ważna różnica w porównaniu z TypeScript: TS pozwala wymusić typ w miejscu wywołania za pomocą identity<number>(5). Luau nie obsługuje argumentów typów w miejscu wywołania. Ten zapis nie jest specjalną składnią, więc Luau odczytuje nawiasy ostre jako operatory mniejsze niż/większe niż i kod się nie powiedzie. Jeśli chcesz jawnie określić typ, dodaj adnotację do zmiennej:

local count: number = identity(12)

Możesz obserwować wnioskowanie w działaniu za pomocą znanego narzędzia: typeof zwraca nazwę typu wartości w czasie wykonywania, więc print(typeof(identity(12))) wypisuje number: wartość przeszła przez funkcję generyczną bez żadnych zmian.

challenge icon

Wyzwanie

Łatwy

Pozwól, aby system sprawdzania ustalił T przy każdym wywołaniu.

  1. Pod funkcją zapisz identity("Oslo") w local city i identity(42) w local floors, bez adnotacji.
  2. Wypisz typeof(city), a następnie typeof(floors).

Naciśnij Uruchom kod: wynik pokazuje string i number.

Spróbuj swoich sił

-- Generyczna funkcja identity z poprzedniej lekcji
local function identity<T>(value: T): T
    return value
end

-- 1) city i floors z wywołań identity, bez adnotacji
-- 2) wypisz typeof dla każdej z nich

Wszystkie lekcje w sekcji Wprowadzenie do Luau

Poćwicz samodzielnie: Kompilator Luau online