غالبًا ما يجب تغيير محتويات المصفوفة، مثل الحاجة إلى إزالة عنصر من مخزون اللاعب. يوفر Luau وظائف مضمنة للاستخدام مع الجداول لتسهيل ذلك.
هذه المقالة ستستعرض الوظائف المُعدة مسبقًا للجداول مثل الإضافة والإزالة، مع وصف كيفية البحث عن قيمة معينة.
لتطبيق هذه المهارات، ستقوم بإنشاء نص يساعد في إدارة مخزون اللاعب.

إضافة القيم إلى المصفوفات
لإضافة قيمة جديدة إلى مصفوفة، استخدم table.insert(array, valueToInsert). يمكن أن تكون المعلمة الثانية أي قيمة مثل سلسلة نصية، رقم، أو كائن كامل، مثل Player أو IntValue.
للممارسة، ستقوم بإنشاء نص يقوم بتخزين عناصر اللاعب في جدول، ثم الإضافة إليه. نظرًا لأن هذا المثال هو مجرد نص، يمكن استخدامه مع أي ملف أو مشروع. سيتم اختبار الشيفرة باستخدام نافذة الإخراج.
أنشئ مصفوفة فارغة تُسمى playerItems.
playerItems = {}أضف عناصر المخزون إلى المصفوفة عن طريق كتابة table.insert(). في الأقواس، اكتب playerItems، الجدول الذي تريد الإضافة إليه، متبوعًا بسلسلة نصية لكل عنصر. أدخل على الأقل ثلاث قيم.
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping Bag")print(playerItems)قم بتشغيل المشروع. في الإخراج، قم بتوسيع النقاط الثلاث ... لرؤية الجدول المطبوعة.
إزالة القيم من المصفوفات
لإزالة قيمة، مثل إذا استخدم لاعب عنصرًا ما أو غادر شخص ما في قائمة اللاعبين النشطين تجربة، استخدم table.remove(). بناءً على المعلمات المقدمة، يمكن أن تقوم الدالة إما بإزالة آخر قيمة من الجدول، أو من في فهرس معين.
إزالة آخر قيمة
في بعض الأحيان يحتاج النص إلى إزالة عنصر معين. على سبيل المثال، إزالة العنصر الأول من مخزون اللاعب، أو اختيار أول لاعب في قائمة. لإزالة آخر قيمة في مصفوفة، استخدم table.remove(arrayName). في هذا الاستخدام، المعلمة الوحيدة المطلوبة هي الجدول نفسه.
استخدم مصفوفة العناصر من المثال السابق. ثم، لإزالة آخر قيمة من الجدول، في هذه الحالة "Sleeping Bag"، اكتب table.remove(playerItems)
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping bag")table.remove(playerItems)print(playerItems)قم بتشغيل المشروع. في نافذة الإخراج، لا ينبغي أن تُطبع القيمة الأخيرة، "Sleeping Bag".
إزالة بواسطة الفهرس
لإزالة قيمة في نقطة معينة في المصفوفة، أدخل في المعلمة الثانية الفهرس الذي تريد إزالته، مثل table.remove(arrayName, 1).
باستخدام نفس الجدول، اكتب table.remove(). في المعلمات، أدخل اسم الجدول و 1، القيمة التي تريد إزالتها.
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping bag")table.remove(playerItems, 1)قم بتشغيل المشروع. تحقق من أن القيمة الأولى، "Potion" قد أزيلت.
البحث عن القيم في مصفوفة
للعثور على قيم معينة في المصفوفات، مثل اسم لاعب فائز، استخدم دالة table.find(). بدلاً من ذلك، يمكنك برمجة دالة بحث خاصة بك باستخدام حلقات for وعبارات if.
العثور على وإرجاع قيمة واحدة
للعثور على قيمة في مصفوفة، أنشئ دالة تُسمى findValue() التي تتصفح المصفوفة وتتوقف المرة الأولى عندما تجد قيمة مطابقة.
بمجرد أن تجد القيمة، ستستخدم الدالة الكلمة الأساسية return لإرجاع فهرس تلك القيمة. مع فهرس، يمكنك إزالتها من المصفوفة.
انسخ المصفوفة التي تُسمى playerItems أدناه.
local playerItems = {"Potion","Bread","Bread","Sleeping Bag"}اكتب دالة جديدة تُسمى findValue() مع معلمين:
whichArray - المصفوفة للبحث من خلالها.
itemName - السلسلة النصية المحددة للتحقق منها.
local function findValue(whichArray, itemName)end
في findValue(), استخدم حلقة for للتحقق مما إذا كانت أي قيمة في المصفوفة تطابق itemName. إذا تطابقت القيمة، استخدم الكلمة الأساسية return لإرجاع القيمة التي تم العثور عليها في currentIndex.
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName thenreturn currentIndexendendendاختبر دالة البحث عن طريق إنشاء متغير يُسمى valueFound واستدعاء findValue(). تمرير المصفوفة للبحث، وما القيمة التي يجب البحث عنها. قم بتشغيل الشيفرة لتأكيد أن الناتج المتوقع هو الفهرس 2.
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName then--يرسل قيمة currentIndexreturn currentIndexendendendlocal valueFound = findValue(playerItems, "Bread")print("القيمة في الفهرس " .. valueFound)
إزالة قيمة
إذا تم العثور على قيمة باستخدام دالة البحث، يمكن إزالتها. تحقق مما إذا كانت قيمة موجودة باستخدام عبارة if.
تحقق مما إذا كانت قيمة توجد داخل valueFound; إذا كان الأمر كذلك، أزل القيمة باستخدام table.remove().
if valueFound thentable.remove(playerItems, valueFound)endطبع المصفوفة باستخدام الشيفرة أدناه.
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Index " .. index .. ": " .. itemString)endقم بتجريب واختبر التأكد من أن أول قيمة "Bread" تم إزالتها من المصفوفة. حاول إزالة قيم أخرى عن طريق تغيير المعلمة الثانية في findValue().
لاحظ أنه بسبب استدعاء هذه الدالة مرة واحدة، تمت إزالة أول حالة فقط من "Bread". ستتناول القسم التالي كيفية العثور على وإزالة جميع الحالات.
العثور على وإزالة جميع القيم المحددة
بينما كانت الشيفرة السابقة يمكن أن تُزيل فقط الحالة الأولى من القيمة الموجودة، ستجد هذه الشيفرة وتزيل جميع التكرارات من مصفوفة. على سبيل المثال، إذا أراد لاعب بيع جميع خبزهم في متجر داخل اللعبة.
استخدم مصفوفة تُسمى playerItems تحتوي على أربع قيم على الأقل ومجموعة من التكرارات.
local playerItems = {"Potion","Bread","Bread","Sleeping Bag"}للمرور عبر المصفوفة، أنشئ حلقة for تتجه للخلف عبر playerItems، بدءًا من #playerItems، انتهاءً عند 1، وزيادة بمقدار -1.
for index = #playerItems, 1, -1 doendفي الحلقة، استخدم عبارة if للتحقق مما إذا كانت القيمة الموجودة داخل playerItems[index] تساوي "Bread", وإذا كان الأمر كذلك، قم بإزالة العنصر.
for index = #playerItems, 1, -1 doif playerItems[index] == "Bread" thentable.remove(playerItems, index)endendاستخدم الشيفرة أدناه لإضافة حلقة for ثانية لطباعة المصفوفة.
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Index " .. index .. ": " .. itemString)endقم بتشغيل الشيفرة وتحقق من أن جميع القيم المسماة "Bread" قد تمت إزالتها.
الملخص
يمكن إزالة القيم أو إضافتها إلى مصفوفة، ولكن كن حذرًا من تحرك الفهارس عند القيام بذلك. استخدم الحلقات للتكرار عبر الجدول لإزالة جميع حالات قيمة معينة، أو فقط الحالة الأولى المكتشفة.
يمكن استخدام الكلمة الرئيسية return لإيقاف حلقة، وإرسال المعلومات مرة أخرى حيثما دعت الحاجة.
يمكن الإشارة إلى النسخة النهائية من النص أدناه.
المشروع التالي يتضمن جميع النصوص في هذا البرنامج التعليمي. قم بتنزيل هنا.
لاحظ أن جميع النصوص في ServerScriptService و معطلة. لاستخدام نص، في خصائصه، قم بإلغاء تحديد حقل "معطل" وتشغيل الاستوديو.