תחום התחולה ובלוקים
חלק מהיחידה יסודות במסלול ה-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 יוצר סביבה מבודדת משלו עבור משתנים מקומיים. משתנים שמוכרזים בתוך בלוק אינם יכולים לצאת אל מחוץ לתחום שלו, בעוד שניתן לגשת למשתנים מתחומים חיצוניים מתוך בלוקים פנימיים.
אתגר
קלצרו בלוקי do...end מקוננים כדי להדגים כיצד משתנים מקומיים בעלי אותו שם נשארים נפרדים לחלוטין בתחומי היקף שונים.
ראשית, צרו משתנה מקומי בשם playerLevel עם הערך 10 בתחום ההיקף החיצוני והדפיסו אותו.
לאחר מכן צרו בלוק do...end ובתוכו:
- הכריזו על משתנה מקומי חדש בשם
playerLevelגם כן, עם הערך25 - הדפיסו את
playerLevelהפנימי הזה
לאחר סיום הבלוק הפנימי, הדפיסו שוב את playerLevel החיצוני כדי להראות שהוא נותר ללא שינוי.
כך מודגם שמשתנים מקומיים בעלי שמות זהים בתחומי היקף שונים הם עצמאיים לחלוטין — המשתנה הפנימי אינו משפיע על החיצוני.
נסו בעצמכם
-- TODO: כתבו את הקוד שלכם כאןהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורים 2: יחסים ולוגיקה
אופרטורי שוויוןאופרטורים יחסייםהאופרטור 'and'האופרטור 'or'האופרטור 'not'הערכה בקצר חשמליערכים אמתיים ושקרייםסיכום – לוגיקה פשוטה10טבלאות חלק 1: בסגנון רשימה
מהי טבלה?יצירת טבלהגישה לאיברים לפי אינדקסשינוי איברים לפי אינדקסאופרטור האורך '#'table.insert()table.remove()סיכום - ניהול חברי החבורה13פרויקט: חנות שיקויים פשוטה
הגדרת הפרויקטהוספת שיקוי2משתנים וסוגי נתונים
מהו משתנה?מספריםמחרוזותערכים בוליאנייםהערך 'nil'הפונקציה type()מוסכמות למתן שמותסיכום – פרופיל דמות5פלט בסיסי
הדפסת ערכים מילולייםהדפסת משתניםהדפסת ערכים מרוביםשילוב מחרוזות ומשתניםהפונקציה tostring()קלטהמרת טיפוסיםסיכום – דוח מצבסיכום – עד 1208יסודות עיבוד מחרוזות
string.len()string.upper ו־string.lowerstring.sub()string.rep()string.find()חזרה – עיצוב שם משתמש11טבלאות 2: בסגנון מילון
זוגות מפתח-ערךיצירת טבלאות בסגנון מילוןגישה באמצעות תחביר סוגריים מרובעיםגישה באמצעות תחביר נקודההוספה ושינוי של זוגותהסרת זוגות באמצעות nilסיכום - מאפייני פריטים14תחום התחולה של משתנים
משתנים גלובלייםמשתנים מקומייםלמה להשתמש במשתנים מקומיים?תחום התחולה ובלוקיםסיכום - חידת תחום התחולה3אופרטורים 1: חשבון ושרשור
אופרטורים אריתמטייםאופרטור מודולואופרטור חזקהשרשור מחרוזותקדימות אופרטוריםסיכום – חישובים פשוטים9יסודות הפונקציות
הגדרת פונקציהקריאה לפונקציהפונקציות עם פרמטריםפונקציות עם כמה פרמטריםהפקודה 'return'סיכום – מחשבון שטחתרגלו בעצמכם: קומפיילר Lua אונליין