Parameter Opsional
Termasuk bagian Pengantar Luau dalam perjalanan Lua di Coddy. Pelajaran 25 dari 73.
Dalam Lua biasa, kamu selalu bisa menghilangkan argumen: argumen yang tidak diberikan diam-diam menjadi nil, dan lupa menangani hal itu adalah penyebab bug yang umum. Luau membuat kemungkinan ini menjadi jelas: tambahkan ? ke tipe parameter untuk menandainya sebagai opsional.
function greet(name: string, title: string?): string
if title then
return `{title} {name}`
end
return `Hello, {name}`
end
print(greet("Ada")) -- Hello, Ada
print(greet("Ada", "Dr.")) -- Dr. Adastring? berarti "string atau nil". Pemanggil boleh memberikan string atau melewatkan argumen itu sepenuhnya. Parameter tanpa ? wajib diisi, dan pemeriksa akan menandai pemanggilan yang tidak menyertakannya.
Di dalam fungsi, parameter opsional mungkin bernilai nil, jadi periksa sebelum menggunakannya: if title then ... end adalah pola standar. Lewati pemeriksaan itu lalu gabungkan nil ke dalam string, dan kamu akan mendapatkan error runtime yang sama seperti yang selalu diberikan Lua. Pemeriksa tipe akan memperingatkanmu terlebih dahulu.
Tantangan
MudahBuat fungsi bernama createUserProfile yang menerima username: string (wajib) dan displayName: string? (opsional), lalu mengembalikan string:
- Jika keduanya diberikan, kembalikan:
"Profile: [displayName] (@[username])" - Jika hanya username yang diberikan, kembalikan:
"Profile: @[username]"
Buat fungsi bernama calculateDiscount yang menerima price: number (wajib) dan membershipLevel: string? (opsional), lalu mengembalikan number:
- Jika level membership diberikan, kembalikan harga yang dikurangi 10% (kalikan dengan
0.9) - Jika tidak, kembalikan harga tanpa perubahan
Panggil dan cetak, masing-masing pada barisnya sendiri:
createUserProfile("john_doe", "John Doe")createUserProfile("jane_smith")calculateDiscount(100, "premium")calculateDiscount(75)
Coba sendiri
-- Tulis kodemu di sini
-- createUserProfile(username: string, displayName: string?): string
-- calculateDiscount(price: number, membershipLevel: string?): number
-- 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