في لوا، كيف يمكنني إزالة جدول داخل جدول؟
سؤال
علي سبيل المثال:
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
إلى الفهرس الخاص بك، هذا لا صراحة حذف ما تم تخزينه مسبقا في هذا الفهرس؛ لكنها تنخفض عدد المرجعية لما تم تخزينه هناك، مما يحتمل أن يجعله مؤهلا لجمع القمامة.
لا تنتمي إلى StackOverflow