Menu
CoddyTech

תחום התחולה ובלוקים

חלק מהיחידה יסודות במסלול ה-Lua של Coddy. שיעור 86 מתוך 90.

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

כך אפשר ליצור תחום חדש באמצעות בלוק do...end:

local outerVar = "I'm outside"

do
    local innerVar = "I'm inside"
    print(outerVar)  -- זה עובד
    print(innerVar)  -- גם זה עובד
end

print(outerVar)  -- זה עובד
print(innerVar)  -- מדפיס nil: המשתנה innerVar קיים רק בתוך הבלוק

היתרון המשמעותי של תחום ההיקף הוא שאפשר להגדיר משתנים מקומיים בעלי אותו שם בבלוקים שונים, והם נשארים נפרדים לחלוטין:

local name = "Alice"

do
    local name = "Bob"  -- משתנה אחר!
    print(name)  -- מדפיס "Bob"
end

print(name)  -- מדפיס "Alice"

כל בלוק do...end יוצר סביבה מבודדת משלו עבור משתנים מקומיים. משתנים שמוגדרים בתוך בלוק אינם יכולים לצאת לטווח החיצוני, ואילו ניתן לגשת למשתנים מטווחים חיצוניים מתוך בלוקים פנימיים.

challenge icon

אתגר

קל

צרו בלוקים מקוננים של do...end כדי להדגים כיצד משתנים מקומיים בעלי אותו שם נשארים נפרדים לחלוטין בתחומים שונים.

תחילה, צרו משתנה מקומי בשם playerLevel עם הערך 10 בתחום החיצוני והדפיסו אותו.

לאחר מכן צרו בלוק do...end ובתוכו:

  • הכריזו על משתנה מקומי חדש שגם שמו playerLevel וערכו 25
  • הדפיסו את playerLevel הפנימי הזה

לאחר שהבלוק הפנימי מסתיים, הדפיסו שוב את playerLevel החיצוני כדי להראות שהוא נותר ללא שינוי.

כך מודגם שמשתנים מקומיים בעלי שמות זהים בתחומים שונים הם בלתי תלויים לחלוטין — המשתנה הפנימי אינו משפיע על המשתנה החיצוני.

נסו בעצמכם

-- TODO: כתבו כאן את הקוד שלכם
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה יסודות

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