متغیرها در لوا
تعریف متغیر، تفاوت local و global، تخصیص چندگانه و قوانین نامگذاری
متغیر چیست؟
متغیر (Variable) مثل یک جعبه برچسبدار است که یک مقدار (عدد، متن و...) را داخلش نگه میدارید تا بعداً از آن استفاده کنید:
local name = "علی" -- جعبهای به نام name با مقدار "علی"
local age = 25 -- جعبهای به نام age با مقدار 25
print(name) -- علی
print(age) -- 25
تعریف متغیر در لوا
در لوا نوع متغیر تعریف نمیکنید — لوا خودش از روی مقدار تشخیص میدهد (تایپ پویا):
local count = 10 -- number
local price = 99.5 -- number (اعشاری)
local title = "لوا" -- string
local isActive = true -- boolean
local در برابر global
این یکی از مهمترین مفاهیم لواست:
-- متغیر سراسری (global)
speed = 100
-- متغیر محلی (local)
local health = 50
| ویژگی | local | global |
|---|---|---|
| سرعت دسترسی | ✅ سریعتر | ❌ کندتر |
| دامنه (Scope) | فقط داخل بلوک تعریف | در کل برنامه |
| اشغال حافظه | بعد از بلوک آزاد میشود | تا پایان برنامه میماند |
| خطر تداخل نام | کم | زیاد |
همیشه از
local استفاده کنید مگر اینکه دلیل خاصی برای global بودن داشته باشید! متغیرهای global در لوا کندتر هستند و ممکن است ناخواسته با هم تداخل کنند.دامنه متغیر محلی (Scope)
local x = 10 -- x در کل فایل قابل دسترسی است
do
local y = 20 -- y فقط داخل این بلوک وجود دارد
print(x, y) -- 10 و 20 — هر دو قابل دسترسی
end
print(x) -- 10
-- print(y) -- nil! y دیگر وجود ندارد
تخصیص چندگانه
لوا اجازه میدهد چند متغیر را همزمان مقداردهی کنید:
local x, y = 10, 20
print(x, y) -- 10 20
-- جابجایی مقادیر (swap) بدون متغیر کمکی!
x, y = y, x
print(x, y) -- 20 10
مقدار nil
nil یعنی «هیچ» — متغیری که مقدار ندارد:
local empty
print(empty) -- nil
local a, b, c = 1 -- فقط a مقدار میگیرد
print(a, b, c) -- 1 nil nil
قوانین نامگذاری
| نام | وضعیت |
|---|---|
name | ✅ صحیح |
user_name | ✅ صحیح (snake_case — رایجترین) |
_temp | ✅ صحیح |
userName | ✅ صحیح (اما رایج نیست) |
2name | ❌ شروع با عدد |
user-name | ❌ خط تیره مجاز نیست |
function | ❌ کلمه رزرو شده |
تغییر مقدار متغیر
local score = 0
print(score) -- 0
score = 100 -- مقدار جدید
print(score) -- 100
score = score + 50 -- بر اساس مقدار قبلی
print(score) -- 150
قرارداد نامگذاری در لوا:
snake_case برای متغیرها و توابع، PascalCase برای ماژولها، و UPPER_CASE برای ثابتها.این مبحث بخشی از دوره آموزش کامل لوا است.