Menentukan Tipe Fungsi Anonim
Termasuk bagian Pengantar Luau dalam perjalanan Lua di Coddy. Pelajaran 23 dari 73.
Di Lua, fungsi adalah nilai: kamu telah menyimpannya dalam variabel dan meneruskannya: local f = function(x) return x * 2 end. Fungsi anonim (ekspresi fungsi) menggunakan anotasi tipe sama seperti fungsi bernama:
local double = function(x: number): number
return x * 2
end
local shout = function(text: string): string
return string.upper(text) .. "!"
endParameter mendapatkan name: type di dalam tanda kurung, dan tipe nilai yang dikembalikan mengikuti tanda kurung penutup: satu-satunya perbedaan dari fungsi bernama adalah kata kunci function tidak memiliki nama dan seluruh ekspresi ditetapkan ke sebuah variabel.
Jika kamu pernah mempelajari JavaScript atau TypeScript, perlu diketahui bahwa Luau tidak memiliki fungsi panah. Tidak ada sintaks =>. Setiap ekspresi fungsi ditulis dengan function ... end, baik panjang maupun pendek.
Setelah ditetapkan, kamu memanggilnya melalui variabel seperti fungsi lainnya: double(21) mengembalikan 42, dan pemeriksa memverifikasi setiap pemanggilan berdasarkan anotasi yang kamu tulis.
Tantangan
MudahTulis ulang fungsi bernama ini sebagai fungsi anonim yang disimpan dalam variabel lokal, dengan mempertahankan semua anotasi tipe:
function subtract(a: number, b: number): number
return a - b
endJadi, buat local subtract = function(...) ... end dengan tipe parameter dan nilai kembalian yang sama.
Lalu buat dua fungsi anonim bertipe lainnya:
createMessage: menerimatext: string, mengembalikan string"Message: [text]"(tipe kembalianstring)isPositive: menerimanum: number, mengembalikantruejika angka tersebut lebih besar dari 0, jika tidak, mengembalikanfalse(tipe kembalianboolean)
Panggil dan cetak masing-masing pada barisnya sendiri:
subtract(10, 3)createMessage("Hello World")isPositive(-5)isPositive(8)
Coba sendiri
-- Tulis kodemu di sini
-- local subtract = function(a: number, b: number): number ... end
-- local createMessage = function(text: string): string ... end
-- local isPositive = function(num: number): boolean ... end
-- lalu tampilkan keempat hasilnya
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 MapLatihan sendiri: Compiler Luau online