תחום התחולה ובלוקים
חלק מהיחידה יסודות במסלול ה-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 יוצר סביבה מבודדת משלו עבור משתנים מקומיים. משתנים שמוגדרים בתוך בלוק אינם יכולים לצאת לטווח החיצוני, ואילו ניתן לגשת למשתנים מטווחים חיצוניים מתוך בלוקים פנימיים.
אתגר
קלצרו בלוקים מקוננים של 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 אונליין