في لوا، كيف يمكنني إزالة جدول داخل جدول؟

StackOverflow https://stackoverflow.com/questions/1827759

  •  11-09-2019
  •  | 
  •  

سؤال

علي سبيل المثال:

items = {
    [753] = {
    },
    [192] = {
    },
    [789] = {
    },
    [791] = {
    },
    [790] = {
    },
    [776] = {
    },
}

أود إزالة 789 وجميع البيانات داخلها. حاولت كليهما: الجدول. Remove (البنود، 2)؛ و table.remove (البنود، 789)؛ (لم أكن متأكدا من كيفية عمل الفهرسة) بدون حظ.

هل كانت مفيدة؟

المحلول

انها سهلة كما

items[789] = nil

في لوا، إذا كان مفتاح في الجدول لديه nil قيمة، ثم كما لو كان المفتاح غير موجود.

> t = { [5] = {}, [10] = {} }
> for k,v in pairs(t) do print(k,v) end
5       table: 0037CBC0
10      table: 0037CBE8
> t[5] = nil
> for k,v in pairs(t) do print(k,v) end
10      table: 0037CBE8

أنظر أيضا Programming في LUA، القسم 2.5. وبعد (على الرغم من أن الإصدار عبر الإنترنت مكتوب ل LUA 5.0، إلا أن هذا لا يزال ينطبق على LUA 5.1)

... يمكنك تعيين Nil إلى حقل جدول لحذفه.

عند تعيينها nil إلى الفهرس الخاص بك، هذا لا صراحة حذف ما تم تخزينه مسبقا في هذا الفهرس؛ لكنها تنخفض عدد المرجعية لما تم تخزينه هناك، مما يحتمل أن يجعله مؤهلا لجمع القمامة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top