Nilai Default Parameter
Termasuk bagian Pengantar Luau dalam perjalanan Lua di Coddy. Pelajaran 26 dari 73.
Parameter opsional menyediakan nilai nil yang perlu kamu tangani. Sering kali, yang sebenarnya kamu inginkan adalah nilai cadangan: "jika pemanggil tidak menyebutkan nilainya, gunakan X". Luau tidak memiliki sintaks default pada signature (tidak ada greeting: string = "Hello"); sebagai gantinya, kamu menggunakan idiom Lua klasik, kini dengan tipe:
function greet(name: string, greeting: string?): string
greeting = greeting or "Hello"
return `{greeting}, {name}`
end
print(greet("Alice")) -- Hello, Alice
print(greet("Alice", "Howdy")) -- Howdy, AliceParameter tersebut diberi anotasi opsional (string?), dan baris pertama isi fungsi mengganti nil dengan nilai default. Cara ini berhasil karena nil bernilai falsy: nil or "Hello" menghasilkan "Hello". Setelah baris itu, pemeriksa mengetahui bahwa greeting tidak mungkin lagi bernilai nil.
Satu hal yang perlu diingat dari Lua: or juga mengganti false! Untuk parameter boolean?, flag = flag or true akan diam-diam menimpa false yang diberikan secara eksplisit. Sebagai gantinya, gunakan pemeriksaan nil yang eksplisit:
function ship(weight: number, expedited: boolean?): number
if expedited == nil then
expedited = false
end
-- ...
endTantangan
MudahBuat fungsi bernama calculateTax dengan parameter price: number (wajib) dan rate: number? yang nilai defaultnya 0.05. Kembalikan jumlah pajak (price * rate) sebagai number.
Buat fungsi bernama formatGreeting dengan parameter name: string (wajib) dan timeOfDay: string? yang nilai defaultnya "Hello". Kembalikan "[timeOfDay], [name]!" sebagai string.
Buat fungsi bernama calculateShipping dengan parameter weight: number dan distance: number (keduanya wajib), serta expedited: boolean? yang nilai defaultnya false: gunakan pemeriksaan nil secara eksplisit untuk parameter ini! Hitung (weight * 0.5) + (distance * 0.1), lalu jika expedited bernilai true, kalikan hasilnya dengan 2. Kembalikan number.
Panggil dan cetak, masing-masing pada barisnya sendiri:
calculateTax(100)calculateTax(200, 0.08)formatGreeting("Alice")formatGreeting("Bob", "Good morning")calculateShipping(5, 100)calculateShipping(3, 50, true)
Coba sendiri
-- Tulis kodemu di sini
-- calculateTax(price: number, rate: number?) -- nilai bawaan rate 0.05
-- formatGreeting(name: string, timeOfDay: string?) -- nilai bawaan "Hello"
-- calculateShipping(weight, distance, expedited: boolean?) -- nilai bawaan false
-- lalu tampilkan keenam 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