0Pricing
Lua Academy · درس

نموذج مكدس Lua C API

افهم مكدس Lua والفهارس وعمليات الدفع والسحب الأساسية

نموذج مكدس Lua C API درس مجاني في Lua Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Lua Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Lua Academy 4 دروس في المجموع.

لماذا C API؟

يمكن تضمين Lua في تطبيقات C/C++. تنشئ شيفرة C المضيفة حالة Lua، وتحمل البرامج النصية، وتستدعي دوال Lua، وتتيح دوال C للغة Lua — وكل ذلك عبر Lua C API.

مكدس Lua

يتواصل Lua C API عبر مكدس افتراضي. تدفع شيفرة C القيم إلى المكدس قبل الاستدعاءات، وتقرأ قيم الإرجاع منه بعد الاستدعاءات.

إنشاء حالة Lua

تنشئ luaL_newstate() حالة مفسّر Lua جديدة. وتحمل luaL_openlibs(L) المكتبات القياسية.

// C code
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>

lua_State *L = luaL_newstate();
luaL_openlibs(L);
// ... use L ...
lua_close(L);

فهارس المكدس

تُعدّ الفهارس الموجبة من الأسفل (‏1 = الأسفل). وتُعدّ الفهارس السالبة من الأعلى (‏-1 = الأعلى، ‏-2 = الثاني من الأعلى).

دفع القيم

ادفعوا الأنواع المختلفة إلى المكدس باستخدام دوال الدفع الخاصة بكل نوع.

// C code
lua_pushnumber(L, 42.0);      // push number
lua_pushstring(L, "hello");   // push string
lua_pushboolean(L, 1);        // push true
lua_pushnil(L);               // push nil

قراءة القيم

اقرؤوا القيم من المكدس دون إزالتها باستخدام دوال lua_to*.

// C code
double n = lua_tonumber(L, -1);     // read top as number
const char *s = lua_tostring(L, 1); // read bottom as string
int b = lua_toboolean(L, -2);

معالجة المكدس

استخدموا lua_pop(L, n) للتخلص من n من القيم الموجودة في أعلى المكدس. وتعيد lua_gettop(L) الارتفاع الحالي للمكدس.

// C code
lua_pushstring(L, "a");
lua_pushstring(L, "b");
printf("stack size: %d\n", lua_gettop(L)); // 2
lua_pop(L, 1);
printf("stack size: %d\n", lua_gettop(L)); // 1

التحقق من النوع

تحقّقوا من نوع قيمة في المكدس باستخدام lua_type(L, idx)، التي تعيد LUA_TNUMBER أو LUA_TSTRING وغيرهما.

دفع الجداول

أنشئوا جدولًا جديدًا واملؤوه من C.

// C code
lua_newtable(L);             // push empty table
lua_pushstring(L, "world");
lua_setfield(L, -2, "hello"); // t.hello = "world"

التحقق من الأخطاء

تعيد معظم دوال C API التي قد تفشل رمز خطأ (LUA_OK = 0). تحقّقوا دائمًا من رموز الإرجاع، واستدعوا lua_tostring(L, -1) للحصول على رسالة الخطأ.

توازن المكدس

تقع مسؤولية إبقاء المكدس متوازنًا عليكم. يجب موازنة كل عملية دفع بعملية سحب (أو استهلاك القيمة بواسطة استدعاء). ويسبب تجاوز سعة المكدس حالة هلع.

سؤال حول نموذج المكدس

إلى ماذا يشير الفهرس -1 في مكدس Lua C API؟

مراجعة: نموذج مكدس Lua C API

يستخدم Lua C API مكدسًا افتراضيًا لتبادل جميع البيانات. ادفعوا القيم قبل الاستدعاءات واقرؤوا النتائج بعدها. استخدموا الفهارس الموجبة (من الأسفل إلى الأعلى) أو السالبة (من الأعلى إلى الأسفل). حافظوا على توازن المكدس لتجنب تجاوز سعته.

الأسئلة الشائعة

هل درس «نموذج مكدس Lua C API» مجاني؟

نعم — نص درس «نموذج مكدس Lua C API» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Lua Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Lua Academy 4 دروس في المجموع.

ماذا ستتعلم في «نموذج مكدس Lua C API»؟

افهم مكدس Lua والفهارس وعمليات الدفع والسحب الأساسية تتمرن على Lua Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Lua Academy؟

لا تُشترط خبرة سابقة. Lua Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «نموذج مكدس Lua C API»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Lua Academy هذا؟

نعم. كل درس في Lua Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. نموذج مكدس Lua C API
  2. استدعاء دوال Lua من C
  3. تسجيل دوال C في Lua
  4. إدارة الحالة ومعالجة الأخطاء
← العودة إلى Lua Academy