Property Opsional
Termasuk bagian Pengantar Luau dalam perjalanan Lua di Coddy. Pelajaran 39 dari 73.
Tidak setiap field selalu ada. Di Lua, membaca field tabel yang tidak ada akan menghasilkan nil, yang fleksibel, tetapi hal ini juga menjadi celah munculnya bug seperti attempt to concatenate a nil value.
Luau memungkinkan sebuah bentuk menyatakan hal ini secara eksplisit: tambahkan ? setelah tipe field untuk menandainya sebagai opsional:
type User = {
name: string, -- wajib
email: string?, -- opsional: string atau nil
}
local alice: User = {name = "Alice", email = "alice@luau.dev"}
local bob: User = {name = "Bob"} -- ✓ boleh, email bersifat opsionalKamu pernah menemui hal ini sebelumnya pada variabel: string? adalah singkatan dari string | nil. Kini, gagasan yang sama berlaku untuk setiap field dalam suatu bentuk.
Karena field opsional mungkin bernilai nil, kamu harus memeriksanya sebelum menggunakannya. Pola Lua klasik tetap bisa digunakan, dan dalam mode strict, pemeriksa tipe akan mempersempit tipe di dalam percabangan:
if bob.email then
print(`email: {bob.email}`) -- di sini email adalah string
else
print("no email on file")
endOpsional berarti "mungkin tidak ada". Itu bukan berarti "tipe apa pun". Jika email ada, nilainya tetap harus berupa string.
Tantangan
MudahBuat alias tipe bernama User dengan:
namebertipestring(wajib)emailbertipestring?(opsional)
Buat dua pengguna:
alice: nama"Alice", email"alice@luau.dev"bob: nama"Bob", tanpa email
Buat fungsi printContact yang menerima User. Jika pengguna memiliki email, fungsi tersebut mencetak [name] - [email]; jika tidak, fungsi tersebut mencetak [name] - no email.
Lalu:
- panggil
printContact(alice) - panggil
printContact(bob) - cetak hasil perbandingan
bob.email == nil
Coba sendiri
-- Tulis kodemu di sini
-- 1) definisikan tipe User dengan field email opsional
-- 2) buat alice (dengan email) dan bob (tanpa email)
-- 3) tulis printContact dengan pemeriksaan nil
-- 4) panggil printContact untuk kedua pengguna, lalu cetak bob.email == nil
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