Menu
Coddy logo textTech

Problem, który rozwiązują typy generyczne

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

Wyobraź sobie, że potrzebujesz funkcji, która po prostu zwraca przekazaną jej wartość: funkcji identycznościowej. Przy znanych ci dotąd typach masz dwie możliwości i obie są kiepskie.

Opcja pierwsza: napisać osobną kopię dla każdego typu. Ciała funkcji są identyczne; różnią się tylko adnotacje:

local function echoNumber(value: number): number
    return value
end

local function echoString(value: string): string
    return value
end

Każdy nowy typ oznacza kolejną kopię, a błąd poprawiony w jednej trzeba poprawić we wszystkich. To właśnie duplikacji chcesz uniknąć, pisząc funkcje.

Opcja druga: połączyć je w jedną funkcję z typem any:

local function echo(value: any): any
    return value
end

Teraz jedna funkcja obsługuje wszystko, ale ceną jest bezpieczeństwo typów. Gdy wywołasz echo("hello"), narzędzie sprawdzające nie wie już, że wynikiem jest ciąg znaków. Zna tylko typ any, więc autouzupełnianie przestaje działać, a błędy typów umykają: znika powiązanie między tym, co zostało przekazane, a tym, co jest zwracane.

Tak naprawdę potrzebujesz funkcji, która działa dla każdego typu i pamięta, jakiego typu użyto przy każdym wywołaniu. Właśnie to zapewniają typy generyczne i to im poświęcony jest ten rozdział.

Spróbuj swoich sił

Ta lekcja nie zawiera wyzwania z kodem.

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