شرط if...elseif...else در لوا
تصمیمگیری در لوا با if، then، elseif، else و مقادیر truthy/falsy
شرط چیست؟
شرط به برنامه اجازه میدهد تصمیم بگیرد: «اگر این شرط درست بود، این کار را بکن؛ وگرنه آن کار را».
ساختار if در لوا
if condition then
-- اگر شرط درست باشد این اجرا میشود
end
توجه کنید که لوا از
then استفاده میکند (نه آکولاد یا دونقطه) و بلوک با end بسته میشود.if ساده
local age = 20
if age >= 18 then
print("شما بزرگسال هستید")
end
if...else
local score = 45
if score >= 50 then
print("قبول شدید! 🎉")
else
print("متأسفانه مردود شدید")
end
if...elseif...else
local score = 85
if score >= 90 then
print("نمره: A")
elseif score >= 80 then
print("نمره: B")
elseif score >= 70 then
print("نمره: C")
elseif score >= 60 then
print("نمره: D")
else
print("نمره: F")
end
لوا شرطها را از بالا به پایین بررسی میکند و بهمحض پیدا شدن شرط درست، بقیه را چک نمیکند. پس ترتیب شرطها مهم است!
مقادیر truthy و falsy
در لوا فقط اینها «نادرست» (falsy) هستند:
nilfalse
همه چیز دیگری درست (truthy) است — حتی 0 و "":
local value = 0
if value then
print("صفر هم اجرا میشود!") -- این چاپ میشود
end
شرطهای تو در تو
local age = 25
local hasTicket = true
if age >= 18 then
if hasTicket then
print("ورود مجاز است")
else
print("بلیط لازم دارید")
end
else
print("سن کافی نیست")
end
ترکیب شرطها با and/or
local age = 25
local isStudent = true
-- هر دو شرط باید درست باشند
if age >= 18 and isStudent then
print("تخفیف دانشجویی بزرگسال")
end
-- حداقل یکی درست باشد
if age < 12 or age > 65 then
print("تخفیف ویژه")
else
print("قیمت عادی")
end
-- نفی شرط
if not isStudent then
print("دانشجو نیستید")
end
الگوی بررسی nil
local function process(value)
if value == nil then
print("مقدار وجود ندارد!")
return
end
print("پردازش: " .. tostring(value))
end
process("سلام")
process(nil)
عملگر سهتایی با and/or
لوا عملگر سهتایی ندارد، اما با and/or میتوان ساخت:
local age = 20
local status = age >= 18 and "بزرگسال" or "کودک"
print(status) -- بزرگسال
این الگو فقط وقتی امن است که مقدار «درست» falsy نباشد (nil/false). وگرنه همیشه مقدار or برگردانده میشود!
این مبحث بخشی از دوره آموزش کامل لوا است.