Fungsi Identitas Generic
Termasuk bagian Pengantar Luau dalam perjalanan Lua di Coddy. Pelajaran 62 dari 80.
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 yang 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 menghubungkan keduanya. Panggil identity("hello"), lalu pemeriksa tipe menentukan T = string untuk pemanggilan itu, sehingga hasilnya berupa string. Panggil identity(42), lalu T = number, sehingga hasilnya berupa number. Satu isi fungsi, semua tipe, tidak ada yang hilang.
T hanyalah nama konvensional (singkatan dari “Tipe”): <Item> atau <Value> juga bisa digunakan. Dan seperti biasa di Luau, tanda kurung sudut hanya ada untuk pemeriksa tipe: saat runtime, ini adalah fungsi Lua biasa function identity(value) return value end.
Tantangan
MudahTulis satu fungsi yang mengembalikan nilai apa pun dengan tipe yang tetap utuh.
- Tulis
local function identity<T>(value: T): Tyang mengembalikanvalue. - Deklarasikan
local luckyNumber: number = identity(7)danlocal greeting: string = identity("Hello, Luau!"). - Cetak
luckyNumber, lalugreeting.
Tekan Jalankan Kode: output menampilkan 7 dan Hello, Luau!.
Coba sendiri
-- 1) identity<T>(value: T): T
-- 2) luckyNumber dan greeting dari pemanggilan identity
-- 3) cetak keduanya
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