Menu
Coddy logo textTech

Korzystanie z funkcji generycznej

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

Nigdy nie informujesz identity, czym jest T: sprawdzarka ustala to samodzielnie. To jest wnioskowanie o typie: przy każdym wywołaniu Luau analizuje argument i ustala T:

local word = identity("Luau")   -- T wywnioskowane jako string
local count = identity(12)      -- T wywnioskowane jako number
local flag = identity(false)    -- T wywnioskowane 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 typ zapisany ręcznie: dla sprawdzarki word jest typu string, z pełnym autouzupełnianiem i sprawdzaniem błędów.

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 typu w miejscu wywołania. Ten wiersz nie jest specjalną składnią, więc Luau odczytuje nawiasy ostrokątne jako operatory porównania „mniejsze niż” i „większe niż”, a kod kończy się błędem. 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 działania, więc print(typeof(identity(12))) wypisuje number: wartość przeszła przez funkcję generyczną bez żadnych zmian.

challenge icon

Wyzwanie

Łatwy

Ogólna funkcja identity z poprzedniej lekcji jest już w edytorze. Wykorzystaj jej wnioskowanie o typie.

Utwórz trzy zmienne, pozwalając modułowi sprawdzającemu wywnioskować T (adnotacje nie są potrzebne):

  • word: wywołaj identity z "Luau"
  • count: wywołaj identity z 12
  • flag: wywołaj identity z false

Wypisz poniższe wartości, każdą w osobnym wierszu:

  1. word
  2. wynik typeof(word)
  3. count
  4. wynik typeof(count)
  5. flag
  6. wynik typeof(flag)

Spróbuj swoich sił

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

-- Napisz tutaj kod
-- 1) utwórz word, count i flag za pomocą wywołań identity (pozwól na wywnioskowanie T)
-- 2) wypisz każdą wartość, a po niej jej typeof
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Wprowadzenie do Luau

Poćwicz samodzielnie: Kompilator Luau online