Menu
CoddyTech

Property Opsional

Termasuk bagian Pengantar Luau dalam perjalanan Lua di Coddy. Pelajaran 41 dari 80.

Tidak setiap field selalu ada. Di Lua, field tabel yang tidak ada cukup dibaca sebagai nil, yang fleksibel, tetapi hal ini juga menjadi penyebab bug seperti attempt to concatenate a nil value muncul.

Luau memungkinkan bentuk data menyatakannya 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"} -- ✓ tidak masalah, email bersifat opsional

Kamu pernah menemui ini sebelumnya pada variabel: string? adalah bentuk singkat dari string | nil. Gagasan yang sama sekarang berlaku untuk setiap field dalam bentuk data.

Karena field opsional mungkin bernilai nil, kamu harus memeriksanya sebelum menggunakannya. Pola klasik Lua tetap berfungsi, dan dalam mode strict, pemeriksa tipe mempersempit tipe di dalam cabang:

if bob.email then
    print(`email: {bob.email}`) -- di sini email adalah string
else
    print("no email on file")
end

Opsional berarti "mungkin tidak ada". Itu bukan berarti "tipe apa pun". Jika email ada, nilainya tetap harus berupa string.

challenge icon

Tantangan

Mudah

Cetak kontak yang emailnya mungkin tidak ada.

  1. Tulis type User = {name: string, email: string?}, lalu local mia: User = {name = "Mia", email = "mia@coddy.tech"} dan local leo: User = {name = "Leo"}.
  2. Tulis local function printContact(user: User) untuk mencetak `{user.name}: {user.email}`, atau `{user.name}: no email` jika tidak ada.
  3. Panggil fungsi itu untuk mia, lalu leo.

Tekan Jalankan: output menampilkan Mia: mia@coddy.tech dan Leo: no email.

Coba sendiri

-- 1) buat tipe User dengan email opsional, lalu buat mia dan leo
-- 2) buat fungsi printContact(user: User) yang memeriksa email
-- 3) panggil fungsi itu untuk mia, lalu leo

Semua pelajaran di Pengantar Luau

Latihan sendiri: Compiler Luau online