متدهای جدول در لوا

توابع کتابخانه table: insert، remove، concat، sort و unpack

کتابخانه table

لوا توابع کار با جدول‌ها را در کتابخانه table جمع کرده است:

table.insert — درج

local arr = {1, 2, 3}

-- درج در انتها
table.insert(arr, 4)        -- {1, 2, 3, 4}

-- درج در موقعیت مشخص (بقیه جابه‌جا می‌شوند)
table.insert(arr, 1, 0)     -- {0, 1, 2, 3, 4}
print(table.concat(arr, ", "))   -- 0, 1, 2, 3, 4

table.remove — حذف

local arr = {"الف", "ب", "ج", "د"}

-- حذف از انتها (و برگرداندن مقدار)
local last = table.remove(arr)
print(last)   -- د

-- حذف از موقعیت مشخص
local first = table.remove(arr, 1)
print(first)  -- الف

print(table.concat(arr, ","))   -- ب,ج

table.concat — الحاق

local words = {"لوا", "زبان", "عالی"}

print(table.concat(words, " "))       -- لوا زبان عالی
print(table.concat(words, "-", 1, 2)) -- لوا-زبان (فقط ۱ تا ۲)

-- اعداد هم کار می‌کنند
print(table.concat({1, 2, 3}, ", "))  -- 1, 2, 3

table.sort — مرتب‌سازی

local nums = {5, 2, 8, 1, 9}

-- مرتب‌سازی پیش‌فرض (صعودی)
table.sort(nums)
print(table.concat(nums, ", "))   -- 1, 2, 5, 8, 9

-- مرتب‌سازی نزولی با تابع مقایسه
table.sort(nums, function(a, b) return a > b end)
print(table.concat(nums, ", "))   -- 9, 8, 5, 2, 1

-- مرتب‌سازی جدول اشیاء
local people = {
{name = "علی", age = 30},
{name = "مریم", age = 25},
{name = "رضا", age = 35},
}

table.sort(people, function(a, b) return a.age < b.age end)
for _, p in ipairs(people) do
print(p.name, p.age)
end
table.sort ناپایدار است — ترتیب عناصر برابر ممکن است عوض شود. اگر پایداری مهم است، کلید ثانویه اضافه کنید.

table.unpack — پخش جدول

local args = {3, 7, 1}

print(math.max(table.unpack(args)))   -- 7

-- معادل: math.max(3, 7, 1)

مثال عملی: صف (Queue)

local queue = {}

-- افزودن به صف
local function push(q, value)
table.insert(q, value)
end

-- برداشتن از صف
local function pop(q)
return table.remove(q, 1)
end

push(queue, "اول")
push(queue, "دوم")
push(queue, "سوم")

print(pop(queue))   -- اول
print(pop(queue))   -- دوم
print(#queue)       -- 1

مثال عملی: پشته (Stack)

local stack = {}

-- push و pop هر دو از انتها
table.insert(stack, "الف")
table.insert(stack, "ب")
table.insert(stack, "ج")

print(table.remove(stack))   -- ج (آخرین وارد، اولین خارج)
print(table.remove(stack))   -- ب

جدول خلاصه

تابعکار
table.insert(t, v)درج در انتها
table.insert(t, i, v)درج در موقعیت i
table.remove(t)حذف از انتها
table.remove(t, i)حذف از موقعیت i
table.concat(t, sep)الحاق عناصر
table.sort(t, cmp)مرتب‌سازی
table.unpack(t)تبدیل به آرگومان‌ها

این مبحث بخشی از دوره آموزش کامل لوا است.

ابزارهای مرتبط