Menu
Coddy logo textTech

Generyczna funkcja identycznościowa

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

Oto poprawnie napisana funkcja identycznościowa jako funkcja generyczna:

local function identity<T>(value: T): T
    return value
end

<T> po nazwie funkcji deklaruje parametr typu: symbol zastępczy oznaczający „jakiś typ, określany przy każdym wywołaniu”. W sygnaturze używasz T dokładnie tak jak rzeczywistego typu: parametr jest typu T, a funkcja zwraca wartość typu T.

Cały trik polega na użyciu tego same T dla wejścia i wyjścia. Wiąże je ze sobą. Wywołaj identity("hello"), a weryfikator typów określi T = string dla tego wywołania, więc wynikiem będzie wartość typu string. Wywołaj identity(42), a T = number, więc wynikiem będzie wartość typu number. Jedno ciało funkcji, każdy typ, niczego nie tracisz.

T to tylko umowna nazwa (skrót od „Type”): równie dobrze sprawdzą się <Item> lub <Value>. I jak zawsze w Luau, nawiasy ostrokątne istnieją tylko na potrzeby weryfikatora typów: w czasie działania jest to zwykła funkcja Lua function identity(value) return value end.

challenge icon

Wyzwanie

Łatwy

Utwórz funkcję generyczną o nazwie identity, która:

  • deklaruje parametr typu T
  • przyjmuje jeden parametr o nazwie value typu T
  • zwraca tę wartość, a jej typem zwracanym jest T

Następnie utwórz następujące zmienne o określonych typach, używając swojej funkcji:

  • luckyNumber typu number: wywołaj identity z argumentem 7
  • greeting typu string: wywołaj identity z argumentem "Hello, Luau!"
  • isReady typu boolean: wywołaj identity z argumentem true

Wypisz poniższe elementy, każdy w osobnym wierszu:

  1. luckyNumber
  2. greeting
  3. isReady
  4. wynik bezpośredniego wywołania identity z argumentem "<code>generics" wewnątrz print
  5. wynik bezpośredniego wywołania identity z argumentem 99 wewnątrz print

Spróbuj swoich sił

-- Napisz kod tutaj
-- 1) zdefiniuj identity<T>(value: T): T
-- 2) utwórz luckyNumber, greeting i isReady za pomocą wywołań identity
-- 3) wypisz je, a następnie wypisz identity(dokładny tekst z instrukcji) i identity(99)
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