Menu
Coddy logo textTech

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

חלק מהיחידה יסודות במסלול ה-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)  -- זה יגרום לשגיאה!

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

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 אונליין