سینتکس لوا
ساختار کد لوا، بلوکها با end، کلمات رزرو شده و قوانین پایه نوشتن کد
سینتکس یعنی چه؟
سینتکس (Syntax) یعنی قواعد نوشتن کد — مثل دستور زبان در زبانهای انسانی. لوا یکی از سادهترین سینتکسهای دنیا را دارد و به همین دلیل یادگیریاش سریع است.
ساختار پایه
هر برنامه لوا از مجموعهای از دستورات (Statements) تشکیل شده که خط به خط اجرا میشوند:
local x = 10 -- تعریف متغیر
print(x) -- چاپ
if x > 5 then -- شرط
print("بزرگ است") -- بدنه شرط
end -- پایان شرط
بلوکها و کلمه end
برخلاف پایتون (که از تورفتگی استفاده میکند) یا جاوااسکریپت (که از آکولاد استفاده میکند)، لوا بلوکهای خود را با کلمه کلیدی end میبندد:
-- شرط
if condition then
-- کد
end
-- حلقه
for i = 1, 10 do
-- کد
end
-- تابع
function myFunc()
-- کد
end
-- while
while condition do
-- کد
end
then یا do ختم شود، و با end تمام میشود!کلمات رزرو شده
لوا فقط ۲۱ کلمه رزرو شده دارد که نمیتوانید از آنها بهعنوان نام متغیر استفاده کنید:
| دسته | کلمات |
|---|---|
| شرط و منطق | and, or, not, true, false, nil |
| شرطها | if, then, elseif, else |
| حلقهها | for, while, do, repeat, until, in |
| پرش | break, goto |
| توابع | function, return, local |
| پایان بلوک | end |
حساسیت به حروف
لوا حساس به حروف بزرگ و کوچک (case-sensitive) است:
print("درست") -- تابع درست
-- Print("غلط") -- خطا! تابعی به نام Print نداریم
local age = 20
local Age = 30 -- این دو متغیر متفاوت هستند!
نقطهویرگول اختیاری است
در لوا نقطهویرگول (;) لازم نیست، اما اگر دوست دارید میتوانید بنویسید:
print("سلام")
print("دنیا"); -- نقطهویرگول مشکلی ایجاد نمیکند
print("لوا")
تورفتگی (Indentation)
برخلاف پایتون، تورفتگی در لوا اجباری نیست — اما برای خوانایی کد حتماً از آن استفاده کنید:
-- بد خوانا (اما صحیح!)
if 5 > 3 then print("بزرگتر") end
-- خوانا ✅
if 5 > 3 then
print("بزرگتر")
end
نامگذاری شناسهها (Identifiers)
- میتواند شامل حروف، اعداد و زیرخط (
_) باشد - نباید با عدد شروع شود:
2nameغلط است - قرارداد رایج:
snake_caseبرای متغیرها و توابع - نامهایی که با
_و حرف بزرگ شروع میشوند (مثل_VERSION) برای متغیرهای ویژه لوا رزرو شدهاند
خطاهای رایج سینتکس
-- فراموش کردن end
if true then
print("سلام")
-- end جا افتاده! ❌
-- فراموش کردن then
if true
print("سلام")
end
-- then جا افتاده! ❌
'end' expected گرفتید، یعنی جایی یک end یا then/do جا انداختهاید. از تورفتگی صحیح استفاده کنید تا بلوکها را راحت ببینید.این مبحث بخشی از دوره آموزش کامل لوا است.