Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

إنشاء واستئناف الـ coroutine

جزء من قسم المنطق والتحكم في التدفق في رحلة Lua على Coddy. الدرس 49 من 54.

الآن بعد أن فهمت ماهية coroutines، لنتعلّم كيفية إنشائها وتشغيلها فعليًا في Lua.

لإنشاء coroutine، تستخدم الدالة coroutine.create(). تأخذ هذه الدالة دالةً عاديةً كوسيط لها وتغلّفها في كائن coroutine. إليك الصياغة الأساسية:

function myTask()
    print("Hello from coroutine!")
end

local co = coroutine.create(myTask)

في هذه المرحلة، يكون coroutine موجودًا، لكنه لم يبدأ في العمل بعد. لم يتم استدعاء الدالة myTask. لبدء تنفيذ coroutine أو متابعته فعليًا، تستخدم coroutine.resume():

coroutine.resume(co)

عندما تستدعي resume() على coroutine للمرة الأولى، يبدأ تنفيذها من بداية function الخاصة بها. إذا نفّذت coroutine كامل مسارها دون توقّف مؤقت، فإنها تكتمل ولا يمكن استئنافها مرة أخرى.

إليك مثالًا كاملًا:

function greet()
    print("Starting...")
    print("Finishing!")
end

local co = coroutine.create(greet)
coroutine.resume(co)  -- يطبع كلا الرسالتين

يعمل coroutine من البداية إلى النهاية دفعةً واحدة. في الدرس التالي، ستتعلّم كيفية جعل coroutine تتوقف مؤقتًا في منتصف التنفيذ.

challenge icon

التحدي

سهل

اكتب function باسم runSimpleCoroutine تأخذ message وتُرجع المخرجات من coroutine التي تطبع تلك الرسالة.

أنشئ coroutine باستخدام coroutine.create() لتغليف function تطبع الرسالة المقدَّمة. ثم استخدم coroutine.resume() لتنفيذ coroutine. يجب أن تُرجع function الرسالة التي تمت طباعتها.

المنطق:

  • عرّف function تطبع معامل message
  • أنشئ coroutine من تلك function باستخدام coroutine.create()
  • استأنف coroutine باستخدام coroutine.resume()
  • أرجِع الرسالة التي تمت طباعتها

المعاملات:

  • message (string): الرسالة التي ستتم طباعتها بواسطة coroutine

القيم المُرجعة: الرسالة التي تمت طباعتها بواسطة coroutine (string)

جرّب بنفسك

function runSimpleCoroutine(message)
    -- اكتب الكود هنا
end
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق والتحكم في التدفق

تدرّب بنفسك: مترجم Lua عبر الإنترنت