Fungsi Identitas Generic
Termasuk bagian Pengantar Luau dalam perjalanan Lua di Coddy. Pelajaran 58 dari 73.
Berikut fungsi identitas yang benar, sebagai fungsi generik:
local function identity<T>(value: T): T
return value
end<T> setelah nama fungsi menyatakan parameter tipe: placeholder yang mewakili "suatu tipe, ditentukan pada setiap pemanggilan". Di dalam signature, kamu menggunakan T persis seperti tipe sungguhan: parameternya bertipe T, dan fungsi mengembalikan T.
Menggunakan T yang sama untuk input dan output adalah inti triknya. Ini mengaitkan keduanya. Panggil identity("hello"), lalu checker menentukan T = string untuk pemanggilan itu, sehingga hasilnya berupa string. Panggil identity(42), dan T = number, sehingga hasilnya berupa number. Satu isi fungsi, semua tipe, tidak ada yang hilang.
T hanyalah nama konvensional (singkatan dari "Type"): <Item> atau <Value> juga bisa digunakan. Dan seperti biasa di Luau, tanda kurung sudut hanya ada untuk checker: saat runtime, ini adalah fungsi Lua biasa function identity(value) return value end.
Tantangan
MudahBuat fungsi generik bernama identity yang:
- mendeklarasikan parameter tipe
T - menerima satu parameter bernama
valuedengan tipeT - mengembalikan nilai tersebut, dengan tipe kembalian
T
Lalu buat variabel-variabel bertipe berikut menggunakan fungsi tersebut:
luckyNumberdengan tipenumber: panggilidentitydengan7greetingdengan tipestring: panggilidentitydengan"Hello, Luau!"isReadydengan tipeboolean: panggilidentitydengantrue
Cetak hal-hal berikut, masing-masing pada barisnya sendiri:
luckyNumbergreetingisReady- hasil pemanggilan
identitydengan"<code>generics" langsung di dalamprint - hasil pemanggilan
identitydengan99langsung di dalamprint
Coba sendiri
-- Tulis kodemu di sini
-- 1) definisikan identity<T>(value: T): T
-- 2) buat luckyNumber, greeting, dan isReady dengan memanggil identity
-- 3) cetak ketiganya, lalu cetak identity(teks persis dari instruksi) dan identity(99)
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