سؤال

أنا أعلم عن:http://lua-users.org/wiki/SimpleLuaAapiexample

يوضح لي كيفية إنشاء إدخال زوج (مفتاح ، قيمة) عن طريق الإدخال.

لنفترض بدلاً من ذلك ، أريد إنشاء طاولة عملاقة (قل شيئًا ما جدول إدخال 1000 ، حيث يكون كل من المفتاح والقيمة سلاسل) ، هل هناك طريقة سريعة للقيام بذلك في لوا (بدلاً من 4 مكالمات Func لكل إدخال:

push
key
value
rawset
هل كانت مفيدة؟

المحلول

ما كتبته هو الطريقة السريعة لحل هذه المشكلة. تم تصميم طاولات Lua ببراعة ، وبسرعة كافية بحيث لا توجد حاجة لنوع من "تلميح" وهمية ليقول "أتوقع أن ينمو هذا الجدول ليحتوي على 1000 عنصر".

نصائح أخرى

لمفاتيح السلسلة ، يمكنك استخدام lua_setfield.

لسوء الحظ ، بالنسبة للجداول الترابطية (مفاتيح السلسلة ، مفاتيح غير متتالية) ، لا ، ليس هناك.

بالنسبة لجداول نوع المصفوفة (حيث يتم استخدام فهرسة عدد صحيح 1 ... n) ، هناك بعض الوظائف المحسنة للأداء ، lua_rawgeti و lua_rawseti: http://www.lua.org/pil/27.1.html

يمكنك استخدام Createable لإنشاء جدول يحتوي بالفعل على العدد المطلوب من الفتحات. ومع ذلك ، بعد ذلك ، لا توجد طريقة للقيام بذلك بشكل أسرع بخلاف

for(int i = 0; i < 1000; i++) {
    lua_push... // key
    lua_push... // value
    lua_rawset(L, tableindex);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top