Menu
CoddyTech

Menggunakan Fungsi Generic

Termasuk bagian Pengantar Luau dalam perjalanan Lua di Coddy. Pelajaran 63 dari 80.

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 pada satu baris dan number pada baris berikutnya. Hasil inferensi sama amannya dengan anotasi yang ditulis secara manual: bagi pemeriksa, word adalah string, dengan pelengkapan otomatis penuh dan pemeriksaan error.

Satu perbedaan penting dari TypeScript: TS mengizinkanmu 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 perbandingan kurang dari/lebih dari, lalu kode mengalami error. Jika kamu ingin menyatakan tipe secara eksplisit, beri anotasi pada variabel:

local count: number = identity(12)

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

challenge icon

Tantangan

Mudah

Biarkan pemeriksa menentukan T pada setiap pemanggilan.

  1. Di bawah fungsi, simpan identity("Oslo") ke dalam local city dan identity(42) ke dalam local floors, tanpa anotasi.
  2. Cetak typeof(city), lalu typeof(floors).

Tekan tombol Jalankan: output menampilkan string dan number.

Coba sendiri

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

-- 1) city dan floors dari pemanggilan identity, tanpa anotasi
-- 2) cetak typeof untuk masing-masing

Semua pelajaran di Pengantar Luau

Latihan sendiri: Compiler Luau online