انواع داده در لوا
انواع داده لوا: nil، boolean، number، string، function، table و بررسی نوع با type()
لوا چند نوع داده دارد؟
لوا فقط ۸ نوع داده دارد — خیلی کمتر از اکثر زبانها! این سادگی عمدی است:
| نوع | توضیح | مثال |
|---|---|---|
nil | نبودن مقدار | local x = nil |
boolean | درست یا غلط | true, false |
number | عدد (صحیح و اعشاری) | 42, 3.14 |
string | متن | "سلام" |
function | تابع | print |
table | ساختار داده (آرایه + دیکشنری) | {1, 2, 3} |
userdata | داده C (برای جاسازی) | — |
thread | کوروتین | — |
تابع type()
برای فهمیدن نوع هر مقدار، از تابع type() استفاده کنید:
print(type(nil)) -- nil
print(type(true)) -- boolean
print(type(42)) -- number
print(type("سلام")) -- string
print(type(print)) -- function
print(type({})) -- table
nil — هیچ
nil یعنی «هیچ» یا «تعریفنشده». متغیری که مقدار نداشته باشد nil است و اگر متغیری را nil کنید، عملاً حذف میشود:
local x
print(x) -- nil
local y = 10
y = nil -- y حذف شد
print(y) -- nil
boolean — درست/غلط
فقط دو مقدار: true و false. اما نکته مهم:
در لوا فقط
nil و false «نادرست» محسوب میشوند! عدد صفر و رشته خالی هم درست (truthy) هستند — برخلاف بسیاری از زبانها!if 0 then print("صفر هم درست است!") end
if "" then print("رشته خالی هم درست است!") end
number — عدد
لوا بین عدد صحیح و اعشاری تمایز ذهنی زیادی قائل نمیشود؛ هر دو number هستند:
print(type(10)) -- number
print(type(10.5)) -- number
print(type(1e3)) -- number (1000)
string — رشته
رشتهها با نقلقول دوتایی یا تکگانه تعریف میشوند:
local a = "دوتایی"
local b = 'تکگانه'
print(a, b) -- هر دو رشته هستند
table — پادشاه لوا
جدول تنها ساختار داده لواست و همزمان میتواند آرایه، لیست، دیکشنری و حتی شیء باشد:
local arr = {10, 20, 30} -- آرایه
local dict = {name = "علی", age = 25} -- دیکشنری
print(arr[1]) -- 10 (ایندکس از 1!)
print(dict.name) -- علی
جدولها آنقدر مهم هستند که ۴ مبحث کامل از این دوره به آنها اختصاص یافته است!
مقایسه با پایتون و جاوااسکریپت
| مفهوم | Lua | Python | JavaScript |
|---|---|---|---|
| هیچ | nil | None | null/undefined |
| آرایه/لیست | table | list | Array |
| دیکشنری | table | dict | Object |
| شروع ایندکس | 1 | 0 | 0 |
این مبحث بخشی از دوره آموزش کامل لوا است.