লুয়া (Lua) ভাষায় টেবিল (table) হল একমাত্র ডেটা স্ট্রাকচার, যা অ্যারে, ম্যাপ, এবং অবজেক্ট হিসেবে কাজ করতে পারে। টেবিলের মাধ্যমে ডেটা সংরক্ষণ, ম্যানিপুলেট এবং এক্সেস করা যায়। টেবিলের ইনসার্শন (Insertion), ডিলিশন (Deletion), এবং ট্রাভার্সাল (Traversal) অত্যন্ত গুরুত্বপূর্ণ অপারেশন যা টেবিলের মধ্যে ডেটা পরিবর্তন বা অনুসন্ধান করতে ব্যবহৃত হয়।
এই টিউটোরিয়ালে, আমরা টেবিলের ইনসার্শন, ডিলিশন, এবং ট্রাভার্সাল সম্পর্কিত মৌলিক ধারণাগুলি আলোচনা করব।
১. টেবিল ইনসার্শন (Table Insertion)
লুয়া টেবিলে নতুন মান যোগ করতে, আপনি সরাসরি টেবিলের ইনডেক্স বা কিকে মান অ্যাসাইন করতে পারেন। আপনি নতুন উপাদান যোগ করতে table[index] = value সিনট্যাক্স ব্যবহার করতে পারেন।
উদাহরণ:
ইনডেক্স বা কিকে মান অ্যাসাইন করে ইনসার্শন
-- সাধারণ অ্যারে টেবিল
fruits = {"Apple", "Banana", "Orange"}
-- নতুন মান যোগ করা
table.insert(fruits, "Grapes")
-- নির্দিষ্ট ইনডেক্সে মান যোগ করা
table.insert(fruits, 2, "Mango")
-- ফলস্বরূপ টেবিল: {"Apple", "Mango", "Banana", "Orange", "Grapes"}
for i, fruit in ipairs(fruits) do
print(i, fruit)
endএখানে, প্রথম table.insert(fruits, "Grapes") ফাংশনটি টেবিলের শেষে Grapes যোগ করেছে, এবং দ্বিতীয় table.insert(fruits, 2, "Mango") ফাংশনটি ইনডেক্স ২-এ Mango যোগ করেছে।
২. টেবিল ডিলিশন (Table Deletion)
লুয়া টেবিল থেকে মান মুছে ফেলতে, আপনি table.remove() ফাংশন ব্যবহার করতে পারেন। এটি টেবিলের একটি নির্দিষ্ট ইনডেক্স থেকে মান মুছে দেয়। আপনি সরাসরি একটি ইনডেক্স ব্যবহার করে একটি কিকে মান মুছতেও পারেন।
উদাহরণ:
ইনডেক্স ব্যবহার করে ডিলিশন
-- সাধারণ অ্যারে টেবিল
fruits = {"Apple", "Banana", "Orange", "Grapes"}
-- ইনডেক্স ব্যবহার করে ডিলিট
table.remove(fruits, 2) -- ইনডেক্স ২ এর মান "Banana" মুছে ফেলবে
-- ফলস্বরূপ টেবিল: {"Apple", "Orange", "Grapes"}
for i, fruit in ipairs(fruits) do
print(i, fruit)
endএখানে, table.remove(fruits, 2) ফাংশনটি ইনডেক্স ২ (যেখানে Banana ছিল) থেকে মান মুছে ফেলেছে।
কিকে মান মুছে দেওয়া
-- সাধারণ ম্যাপ টেবিল
person = {name = "John", age = 30, city = "New York"}
-- কিকে মান মুছে দেয়া
person.age = nil -- "age" কিকের মান মুছে ফেলেছে
-- ফলস্বরূপ টেবিল: {name = "John", city = "New York"}
for key, value in pairs(person) do
print(key, value)
endএখানে, person.age = nil কিক age থেকে মান মুছে ফেলেছে।
৩. টেবিল ট্রাভার্সাল (Table Traversal)
লুয়া টেবিল ট্রাভার্সাল করতে, আপনি ipairs() বা pairs() ফাংশন ব্যবহার করতে পারেন।
ipairs()ব্যবহার করা হয় সিকোয়েন্সাল (সংখ্যা অনুসরণ করা) টেবিলের জন্য, যেখানে ইনডেক্স সিকোয়েন্স অনুসারে থাকে।pairs()ব্যবহার করা হয় যে কোনো ধরনের টেবিলের জন্য (যেমন, ম্যাপ বা অর্ডারবিহীন টেবিল), যেখানে ইনডেক্স অর্ডার করা থাকে না।
উদাহরণ:
ipairs() ব্যবহার করে ট্রাভার্সাল (সংখ্যাতীত টেবিল)
-- সাধারণ অ্যারে টেবিল
fruits = {"Apple", "Banana", "Orange"}
-- `ipairs()` দিয়ে ট্রাভার্সাল
for i, fruit in ipairs(fruits) do
print(i, fruit)
endএখানে, ipairs() ব্যবহৃত হয়েছে একটি সংখ্যাতীত টেবিলের উপাদানগুলো ট্রাভার্স করতে। আউটপুট হবে:
1 Apple
2 Banana
3 Orangepairs() ব্যবহার করে ট্রাভার্সাল (ম্যাপ বা অর্ডারবিহীন টেবিল)
-- সাধারণ ম্যাপ টেবিল
person = {name = "John", age = 30, city = "New York"}
-- `pairs()` দিয়ে ট্রাভার্সাল
for key, value in pairs(person) do
print(key, value)
endএখানে, pairs() ব্যবহার করা হয়েছে একটি ম্যাপ টেবিলের উপাদানগুলো ট্রাভার্স করতে। আউটপুট হতে পারে:
name John
age 30
city New Yorkবি.দ্র.: pairs() টেবিলের সকল কিক/ভ্যালু ট্রাভার্স করতে ব্যবহৃত হয়, এবং এটি অর্ডার গ্যারান্টি দেয় না।
সারসংক্ষেপ
লুয়া টেবিল ম্যানিপুলেশন খুবই সহজ এবং নমনীয়।
- ইনসার্শন: নতুন মান টেবিলে যোগ করতে
table.insert()ব্যবহার করা হয়। - ডিলিশন: টেবিল থেকে মান মুছতে
table.remove()বা কিকেnilঅ্যাসাইন করা হয়। - ট্রাভার্সাল: টেবিলের উপাদানগুলো ট্রাভার্স করতে
ipairs()(সংখ্যাতীত টেবিল) এবংpairs()(অর্ডারবিহীন টেবিল) ব্যবহার করা হয়।
এই অপারেশনগুলো লুয়া ভাষার টেবিল ডেটা স্ট্রাকচারের সাথে কাজ করার জন্য অপরিহার্য এবং অত্যন্ত শক্তিশালী।
Read more