Pernyataan if, elseif, dan else
Tuliskan logika percabangan kondisional dengan sintaks if/elseif/else Lua.
Pernyataan if, elseif, dan else adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.
Pernyataan if Dasar
Pernyataan if mengevaluasi suatu kondisi dan menjalankan bloknya ketika kondisi tersebut bernilai truthy. Di Lua, hanya false dan nil yang falsy; semua yang lain—termasuk 0 dan ""—bernilai truthy. Akhiri blok dengan end.
local score = 85
if score >= 90 then
print("A grade")
end
if score >= 60 then
print("Passing") -- prints
end
if 0 then
print("0 is truthy!") -- prints in Lua
endif/elseif/else
Rangkai beberapa kondisi dengan elseif dan berikan alternatif dengan else. Lua mengevaluasi kondisi dari atas ke bawah dan hanya menjalankan cabang pertama yang cocok. Berbeda dari switch/case dalam bahasa lain, elseif di Lua merupakan satu kata kunci (bukan else if).
local score = 75
if score >= 90 then
print("A")
elseif score >= 80 then
print("B")
elseif score >= 70 then
print("C") -- prints
elseif score >= 60 then
print("D")
else
print("F")
endOperator Logika dalam Kondisi
Lua menggunakan and, or, dan not sebagai operator logika. Operator tersebut melakukan penghentian dini: and mengembalikan nilai falsy pertama atau nilai terakhir; or mengembalikan nilai truthy pertama atau nilai terakhir. Hal ini memungkinkan pola idiomatis untuk nilai bawaan.
local age = 25
local hasID = true
if age >= 18 and hasID then
print("Entry allowed")
end
-- or for defaults
local name = nil
local display = name or "Guest"
print(display) -- GuestIdiom Ternary dengan and/or
Lua tidak memiliki operator ternary, tetapi pola and/or dapat menirunya: condition and trueVal or falseVal. Pola ini berfungsi selama trueVal bukan false atau nil. Untuk logika ternary yang lebih aman, gunakan fungsi if sebaris.
local x = 10
local label = (x > 5) and "big" or "small"
print(label) -- big
-- Safe ternary function
local function ternary(cond, t, f)
if cond then return t else return f end
end
print(ternary(false, "yes", "no")) -- noPernyataan if Bersarang
Anda dapat menempatkan pernyataan if di dalam cabang lain. Setiap blok bersarang memerlukan end-nya sendiri. Penyusunan bersarang yang terlalu dalam sering menandakan adanya peluang untuk menggunakan pengembalian awal atau klausa penjaga agar logika lebih datar.
local loggedIn = true
local isAdmin = false
if loggedIn then
if isAdmin then
print("Admin dashboard")
else
print("User dashboard") -- prints
end
else
print("Login required")
endKlausa Penjaga
Klausa penjaga adalah pengembalian awal yang menangani kasus tidak valid atau kasus tepi di bagian awal fungsi, sehingga mengurangi penyusunan bersarang. Pola ini menjaga kode untuk "alur normal" tetap tidak menjorok dan lebih mudah dibaca.
local function processAge(age)
if type(age) ~= "number" then
return nil, "age must be a number"
end
if age < 0 then
return nil, "age cannot be negative"
end
-- happy path
return math.floor(age)
end
print(processAge(25.7)) -- 25
print(processAge(-1)) -- nil age cannot be negativeMembandingkan Nilai
Operator perbandingan Lua: == (sama dengan), ~= (tidak sama dengan), <, >, <=, >=. Catatan: ~= adalah "tidak sama dengan" dalam Lua—bukan !=. Perbandingan string menggunakan urutan leksikografis. Anda tidak dapat membandingkan string dengan bilangan secara langsung.
print(1 == 1) -- true
print(1 ~= 2) -- true
print("abc" < "abd") -- true (lexicographic)
print("10" == 10) -- false (different types)
-- Safe nil check
local val = nil
if val == nil then
print("no value")
endKesamaan String
Dua string sama di Lua jika dan hanya jika memiliki isi byte dan panjang yang sama. Lua melakukan internalisasi string, sehingga string yang sama sering menunjuk ke lokasi memori yang sama dan membuat == menjadi perbandingan penunjuk yang cepat. Jangan pernah membandingkan string dengan is atau kesamaan referensi—== selalu membandingkan berdasarkan nilai.
local s1 = "hello"
local s2 = "hel" .. "lo"
print(s1 == s2) -- true (same content)
print(s1 == "Hello") -- false (case sensitive)
-- Check for empty string
local name = ""
if name == "" or name == nil then
print("name is empty or nil")
endPerbandingan Tabel dan Fungsi
Tabel dan fungsi dibandingkan berdasarkan referensi, bukan berdasarkan isi. Dua literal tabel berbeda dengan isi identik tidak sama kecuali keduanya merupakan objek yang sama. Gunakan metamethod seperti __eq untuk menentukan kesamaan kustom pada tabel.
local t1 = {1, 2, 3}
local t2 = {1, 2, 3}
local t3 = t1
print(t1 == t2) -- false (different objects)
print(t1 == t3) -- true (same reference)
local f1 = function() end
local f2 = function() end
print(f1 == f2) -- falsePola Idiomatis
Idiom Lua yang umum dengan kondisional: gunakan assert() untuk memvalidasi prasyarat, gunakan trik and/or untuk nilai bawaan singkat, dan hindari negasi ganda (not not x) untuk mengonversi nilai apa pun menjadi boolean.
-- assert pattern
local function sqrt(n)
assert(n >= 0, "sqrt of negative")
return math.sqrt(n)
end
-- Convert to boolean
local val = 42
local boolVal = not not val
print(boolVal) -- true
-- Default parameter
local function greet(name)
name = name or "World"
print("Hello, " .. name)
end
greet() -- Hello, WorldPemeriksaan Cepat
Nilai mana yang falsy di Lua?
Ringkasan: Kondisional
Ringkasan:
if ... elseif ... else ... end—bentuk percabangan lengkap- Hanya
nildanfalseyang falsy and/ormelakukan penghentian dini dan mengembalikan nilai operand~=berarti "tidak sama dengan" di Lua (bukan !=)- Tabel/fungsi dibandingkan berdasarkan referensi, sedangkan string berdasarkan nilai
- Gunakan klausa penjaga untuk mengurangi penyusunan bersarang
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pernyataan if, elseif, dan else” gratis?
Ya — teks lengkap “Pernyataan if, elseif, dan else” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pernyataan if, elseif, dan else”?
Tuliskan logika percabangan kondisional dengan sintaks if/elseif/else Lua. Kamu berlatih Lua Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Lua Academy?
Tidak diperlukan pengalaman sebelumnya. Lua Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Pernyataan if, elseif, dan else” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Lua Academy ini?
Ya. Setiap pelajaran Lua Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Pernyataan if, elseif, dan else
- Perulangan while dan repeat-until
- Perulangan for Numerik
- for Generik dan break