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 booleanSetiap 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.
Tantangan
MudahBiarkan pemeriksa menentukan T pada setiap pemanggilan.
- Di bawah fungsi, simpan
identity("Oslo")ke dalamlocal citydanidentity(42)ke dalamlocal floors, tanpa anotasi. - Cetak
typeof(city), lalutypeof(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
1Memulai dengan Luau
Apa Itu Luau?Mengapa Menggunakan Luau?Kode Luau PertamamuPemeriksaan Tipe dan Mode ErrorRangkuman: Pengenalan Luau4Bekerja dengan Fungsi
Mengetik Parameter dan Nilai KembalianMengetik Fungsi AnonimFungsi Tanpa Nilai KembalianParameter OpsionalNilai Parameter DefaultNilai Default untuk BooleanFungsi VariadikMendefinisikan Tipe FungsiUlasan: Fungsi Bertipe2Tipe Inti
Number, String, dan BooleanTipe 'any': Jalan KeluarTipe 'unknown'Nil dan Tipe OpsionalInferensi Tipe dalam PraktikAnotasi Tipe EksplisitUlasan: Latihan Tipe Inti5Alias, Union, dan Intersection
Alias Tipe untuk Tipe PrimitifTipe UnionMenggunakan Tipe UnionTipe LiteralTipe IntersectionMenggabungkan Alias TipeRekap: Kombinasi Tipe Lanjutan3Tabel Bertipe: array & map
Array BertipeMenambahkan dan Membaca ElemenApa Itu Tipe Map?Mendeklarasikan dan Mengakses MapMenelusuri TabelTabel dengan Bentuk CampuranMembaca GridMembuat Gridtable.unpackRangkuman: array dan map6Pengetikan Bentuk Tabel
Anotasi Bentuk Secara InlineAlias Tipe untuk BentukProperty OpsionalBentuk vs. Tabel LonggarMemperluas BentukMenambahkan method ke BentukMethod self dan Method Titik DuaUlasan: Mendefinisikan Bentuk Tabel9Generics: Pengenalan Awal
Masalah yang Diatasi GenericsFungsi Identitas GenericMenggunakan Fungsi GenericArray GenericAlias Tipe GenericRangkuman: Fungsi GenericLatihan sendiri: Compiler Luau online