Menu
CoddyTech

Menggunakan Fungsi Generic

Termasuk bagian Pengantar Luau dalam perjalanan Lua di Coddy. Pelajaran 59 dari 73.

Kamu tidak pernah memberi tahu identity apa itu T: pemeriksa menentukannya sendiri. Inilah inferensi tipe: di setiap lokasi pemanggilan, Luau melihat argumen dan menentukan T:

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

Setiap pemanggilan bersifat independen: T bisa berupa string di satu baris dan number di baris berikutnya. Hasil inferensi sama amannya dengan anotasi yang ditulis secara manual: bagi pemeriksa, word adalah sebuah string, dengan pelengkapan otomatis dan pemeriksaan error sepenuhnya.

Ada satu perbedaan penting dari TypeScript: TS mengizinkan kamu menentukan tipe secara paksa di lokasi pemanggilan dengan identity<number>(5). Luau tidak memiliki argumen tipe di lokasi pemanggilan. Baris itu bukan sintaks khusus, jadi Luau membaca tanda kurung sudut sebagai operator perbandingan kurang dari/lebih dari, dan kodenya gagal. Jika ingin menyatakan tipe secara eksplisit, anotasi variabelnya:

local count: number = identity(12)

Kamu bisa melihat inferensi bekerja dengan alat yang sudah familier: typeof mengembalikan nama tipe saat runtime dari sebuah nilai, jadi print(typeof(identity(12))) mencetak number: nilai tersebut melewati fungsi generik tanpa perubahan sama sekali.

challenge icon

Tantangan

Mudah

Fungsi generik identity dari pelajaran sebelumnya sudah ada di editor kamu. Manfaatkan inferensi tipenya.

Buat tiga variabel, biarkan pemeriksa menyimpulkan T (anotasi tidak diperlukan):

  • word: panggil identity dengan "Luau"
  • count: panggil identity dengan 12
  • flag: panggil identity dengan false

Cetak hal-hal berikut, masing-masing pada baris tersendiri:

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

Coba sendiri

-- Fungsi identity generik dari pelajaran sebelumnya
local function identity<T>(value: T): T
    return value
end

-- Tulis kodemu di sini
-- 1) buat word, count, dan flag dengan memanggil identity (biarkan T disimpulkan)
-- 2) cetak setiap nilai, lalu typeof-nya
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pengantar Luau

Latihan sendiri: Compiler Luau online