ما هي واجهة C إلى LUA للوصول إلى أزواج جدول / قيمة الجدول؟

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

سؤال

في لوا، باستخدام جيم واجهة، بالنظر إلى جدول، كيف يمكنني التكرار من خلال أزواج الطاولة الرئيسية / القيمة؟

أيضا، إذا تمت إضافة بعض أعضاء جدول الطاولة باستخدام صفائف، فأنا بحاجة إلى حلقة منفصلة للتكرار من خلال تلك أيضا أو هل هناك طريقة واحدة للتكرار على الرغم من هؤلاء الأعضاء في نفس الوقت مثل أزواج المفتاح / القيمة؟

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

المحلول

lua_next() هو نفس نفس lua next() وظيفة، والتي تستخدم من قبل pairs() وظيفة. إنه يكره جميع الأعضاء، سواء في جزء الصفيف وجزء التجزئة.

إذا كنت تريد التناظرية ipairs(), ، ال lua_objlen() يمنحك نفس الوظيفة كما #. وبعد استخدامها و lua_rawgeti() للتكرار الرقص في جزء الصفيف.

نصائح أخرى

كما يقول خافيير، تريد lua_next() وظيفة. اعتقدت أن عينة من التعليمات البرمجية قد تساعد في جعل الأمور أكثر وضوحا لأن هذا يمكن أن يكون صعبا قليلا للاستخدام في النظرة الأولى.

نقلا عن الدليل:

يجري اجتياز نموذجي مثل هذا:

/* table is in the stack at index 't' */
lua_pushnil(L);  /* first key */
while (lua_next(L, t) != 0) {
   /* uses 'key' (at index -2) and 'value' (at index -1) */
   printf("%s - %s\n",
          lua_typename(L, lua_type(L, -2)),
          lua_typename(L, lua_type(L, -1)));
   /* removes 'value'; keeps 'key' for next iteration */
   lua_pop(L, 1);
}

انتبه أن lua_next() هو حساس جدا للقيمة الرئيسية اليسار على المكدس. لا يتصل lua_tolstring() على المفتاح ما لم تكن بالفعل سلسلة بالفعل لأن هذه الوظيفة سوف يستبدل القيمة التي يحولها.

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