0Pricing
Lua Academy · درس

إضافة العناصر وإزالتها

استخدم table.insert وremove

إضافة العناصر وإزالتها درس مجاني في Lua Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Lua Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Lua Academy 4 دروس في المجموع.

توسيع تسلسل

تتغير أحجام القوائم الفعلية أثناء تشغيل البرنامج. توفر لكم Lua الدالة table.insert لإضافة العناصر في نهاية القائمة.

وبما أن التسلسلات تبدأ من 1، فإن الإضافة بعد عنصرين تضع العنصر الجديد عند الفهرس 3.

local list = {"a", "b"}
table.insert(list, "c")
print(list[1], list[2], list[3])

تضيف table.insert عناصر في النهاية

عند استدعائها بوسيطتين، تضع table.insert(t, value) القيمة value في الموضع الذي يلي الفهرس الأخير الحالي مباشرةً.

تزيد كل عملية استدعاء طول التسلسل بمقدار واحد، وتحافظ على اتصال الفهارس.

local q = {}
table.insert(q, "first")
table.insert(q, "second")
print(q[1], q[2])

الإضافة في موضع محدد

عند تمرير ثلاثة وسائط، تُدخل table.insert(t, pos, value) القيمة عند الفهرس pos، وتزيح العناصر اللاحقة إلى الأعلى.

نضع هنا "X" في الموضع 2، لذلك ينتقل العنصر الثاني القديم إلى الموضع 3.

local list = {"a", "b", "c"}
table.insert(list, 2, "X")
print(list[1], list[2], list[3], list[4])

الإضافة في المقدمة

للإضافة في البداية، أدرجوا العنصر عند الموضع 1. ينتقل كل عنصر موجود إلى فهرس أعلى بمقدار واحد.

هذا مفيد، لكنه أبطأ في القوائم الكبيرة، إذ يجب على Lua نقل جميع العناصر.

local list = {"b", "c"}
table.insert(list, 1, "a")
print(list[1], list[2], list[3])

إزالة العنصر الأخير

تحذف table.remove(t)، عند تمرير وسيط واحد، العنصر الأخير وتعيده.

يتقلص التسلسل بمقدار واحد ويبقى خاليًا من الفجوات.

local list = {"a", "b", "c"}
local gone = table.remove(list)
print("removed:", gone)
print(list[1], list[2], list[3])

الإزالة من موضع محدد

تحذف table.remove(t, pos) العنصر الموجود عند pos، وتزيح العناصر اللاحقة إلى الأسفل لإغلاق الفجوة.

تذكروا أن المواضع تبدأ من 1، لذا تزيل pos = 1 العنصر الأول.

local list = {"a", "b", "c"}
local gone = table.remove(list, 1)
print("removed:", gone)
print(list[1], list[2])

تعيد الإزالة القيمة

يعيد كلا الشكلين من table.remove القيمة التي أزالاها، لذا يمكنكم استخدامها فورًا.

يجعل ذلك الجدول يتصرف كمكدس: الدفع باستخدام insert والسحب باستخدام remove.

local stack = {}
table.insert(stack, 10)
table.insert(stack, 20)
local top = table.remove(stack)
print("popped:", top)

طابور بسيط

أضيفوا العناصر في النهاية وأزيلوها من البداية (pos = 1) لمحاكاة طابور يعمل وفق مبدأ: الداخل أولًا يخرج أولًا.

تؤدي كل عملية إزالة إلى إزاحة بقية العناصر إلى الأسفل، لذلك ينتظر العنصر التالي عند الفهرس 1.

local queue = {}
table.insert(queue, "Ann")
table.insert(queue, "Bob")
print("serving:", table.remove(queue, 1))
print("next:", queue[1])

تجنب الفجوات اليدوية

قد يؤدي تعيين عنصر إلى nil باستخدام list[2] = nil إلى ترك فجوة في المنتصف، مما يفسد التسلسل.

فضّلوا استخدام table.remove، إذ تزيح العناصر وتحافظ على اتصال الفهارس.

local list = {"a", "b", "c"}
table.remove(list, 2)
print(list[1], list[2])

الإنشاء من المدخلات

من الأنماط الشائعة البدء بجدول فارغ ثم إضافة العناصر مع وصول البيانات.

نجمع هنا الأعداد الزوجية في تسلسل جديد باستخدام insert.

local evens = {}
for n = 1, 6 do
  if n % 2 == 0 then
    table.insert(evens, n)
  end
end
print(evens[1], evens[2], evens[3])

الجمع بين الإضافة والإزالة

يمكنكم مزج العمليات بحرية. نضيف أدناه ثلاثة أسماء، ثم نزيل الاسم الأوسط.

بعد الإزالة، تحتوي القائمة على عنصرين متصلين.

local names = {}
table.insert(names, "Al")
table.insert(names, "Bea")
table.insert(names, "Cy")
table.remove(names, 2)
print(names[1], names[2])

تحقق سريع

فكروا في كيفية إزاحة الإزالة لعناصر التسلسل.

مراجعة

تعلمتم توسيع القوائم باستخدام table.insert، سواء بالإضافة في النهاية أو في موضع يبدأ من 1، وتقليصها باستخدام table.remove التي تعيد القيمة المُزالة وتغلق الفجوات.

تجنبوا الفجوات اليدوية الناتجة عن nil. بعد ذلك ستتعرّفون على التكرار المنظم باستخدام ipairs.

الأسئلة الشائعة

هل درس «إضافة العناصر وإزالتها» مجاني؟

نعم — نص درس «إضافة العناصر وإزالتها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Lua Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Lua Academy 4 دروس في المجموع.

ماذا ستتعلم في «إضافة العناصر وإزالتها»؟

استخدم table.insert وremove تتمرن على Lua Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Lua Academy؟

لا تُشترط خبرة سابقة. Lua Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «إضافة العناصر وإزالتها»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Lua Academy هذا؟

نعم. كل درس في Lua Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. المصفوفات بوصفها جداول
  2. إضافة العناصر وإزالتها
  3. التكرار باستخدام ipairs
  4. الطول والترتيب
← العودة إلى Lua Academy