Menu
Coddy logo textTech

יצירה וחידוש של קורוטינה

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Lua של Coddy. שיעור 49 מתוך 54.

עכשיו, כשאתם מבינים מהן קורוטינות, בואו נלמד איך ליצור ולהריץ אותן בפועל ב-Lua.

כדי ליצור קורוטינה, משתמשים בפונקציה coroutine.create(). הפונקציה מקבלת פונקציה רגילה כארגומנט ועוטפת אותה באובייקט קורוטינה. הנה התחביר הבסיסי:

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

local co = coroutine.create(myTask)

בשלב הזה, הקורוטינה קיימת אבל עדיין לא התחילה לרוץ. הפונקציה myTask לא נקראה. כדי להתחיל בפועל או להמשיך את הביצוע של קורוטינה, משתמשים ב־coroutine.resume():

coroutine.resume(co)

כשקוראים ל־resume() בקורוטינה בפעם הראשונה, היא מתחילה לפעול מתחילת הפונקציה שלה. אם הקורוטינה רצה עד הסוף בלי לעצור, היא מסתיימת ואי אפשר לחדש אותה שוב.

הנה דוגמה מלאה:

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

local co = coroutine.create(greet)
coroutine.resume(co)  -- מדפיס את שתי ההודעות

הקורוטינה רצה מתחילתה ועד סופה ברצף אחד. בשיעור הבא תלמדו איך לגרום לקורוטינות להשהות את הריצה באמצע הביצוע.

challenge icon

אתגר

קל

כתבו פונקציה runSimpleCoroutine שמקבלת message ומחזירה את הפלט מקורוטינה שמדפיסה את ההודעה הזאת.

צרו קורוטינה באמצעות coroutine.create() שעוטפת פונקציה המדפיסה את ההודעה שסופקה. לאחר מכן השתמשו ב-coroutine.resume() כדי להפעיל את הקורוטינה. הפונקציה צריכה להחזיר את ההודעה שהודפסה.

לוגיקה:

  • הגדירו פונקציה שמדפיסה את הפרמטר message
  • צרו קורוטינה מהפונקציה הזאת באמצעות coroutine.create()
  • חדשו את הקורוטינה באמצעות coroutine.resume()
  • החזירו את ההודעה שהודפסה

פרמטרים:

  • message (מחרוזת): ההודעה שהקורוטינה תדפיס

ערך מוחזר: ההודעה שהקורוטינה הדפיסה (מחרוזת)

נסו בעצמכם

function runSimpleCoroutine(message)
    -- כתבו כאן קוד
end
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת התוכנית

תרגלו בעצמכם: קומפיילר Lua אונליין