سؤال

لدي جدول لوا أستخدمه كـ hashmap ، أي مع مفاتيح السلسلة:

local map = { foo = 1, bar = 2 }

أرغب في "انبثاق" عنصر من هذا الجدول الذي حدده مفتاحه. هناك table.remove() الطريقة ، ولكن لا يستغرق سوى فهرس العنصر لإزالة (أي رقم) وليس مفتاح عام. أود أن أكون قادرًا على القيام به table.remove(map, 'foo') وهنا كيف قمت بتنفيذها:

function table.removekey(table, key)
    local element = table[key]
    table[key] = nil
    return element
end

هل هناك طريقة أفضل للقيام بذلك؟

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

المحلول

لا ، تعيين قيمة المفتاح إلى nil هي الطريقة المقبولة لإزالة عنصر في جزء hashmap من الجدول. ما تفعله هو قياسي. ومع ذلك ، أوصي بعدم تجاوز table.remove() - بالنسبة لجزء الصفيف من الجدول ، تتضمن وظيفة الجدول الافتراضي. إذا كنت تريد إضافة وظيفتك إلى table مجموعة الوظائف ، ثم ربما أذكرها شيئًا مثل table.removekey() أو بعض هكذا.

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