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 booleanSetiap 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.
Tantangan
MudahFungsi generik identity dari pelajaran sebelumnya sudah ada di editor kamu. Manfaatkan inferensi tipenya.
Buat tiga variabel, biarkan pemeriksa menyimpulkan T (anotasi tidak diperlukan):
word: panggilidentitydengan"Luau"count: panggilidentitydengan12flag: panggilidentitydenganfalse
Cetak hal-hal berikut, masing-masing pada baris tersendiri:
word- hasil dari
typeof(word) count- hasil dari
typeof(count) flag- 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
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
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
Menentukan Tipe Parameter dan Nilai KembalianMenentukan Tipe Fungsi AnonimFungsi yang Tidak Mengembalikan NilaiParameter OpsionalNilai Default ParameterFungsi VariadikMendefinisikan Tipe FungsiRangkuman: Fungsi Bertipe2Tipe Inti
Tipe Dasar: num, str, boolTipe 'any': Jalan Keluar DaruratTipe 'unknown'Nil & 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 dan Map
array BertipeMenambahkan dan Membaca ElemenApa Itu Tipe Map?Mendeklarasikan dan Mengakses MapMelakukan Iterasi pada TabelTabel dengan Bentuk Campuranarray Bertipe Multidimensitable.unpack dan VarargsRingkasan: 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