سؤال
أنا أعلم عن: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);
}