Menu
Coddy logo textTech

Lua Cheat Sheet: דף עזר מהיר

עודכן לאחרונה

Hello World והרצת קוד

Lua מינימליסטית: משפט אחד כבר רץ.

פעולהתחביר
הדפסת שורהprint("Hello, World!")
הדפסת כמה ערכיםprint("x", 1, true)
כתיבה בלי ירידת שורהio.write("Hi")
הערה-- this is a comment
הערה מרובת שורות--[[ ... ]]
שרשור מחרוזותprint("Hi " .. name)
הרצת קובץlua app.lua
Shell אינטראקטיביlua

משתנים וטיפוסים

משתנים הם גלובליים כברירת מחדל; הצהירו על משתנים מקומיים עם local.

פעולהתחביר
משתנה מקומיlocal age = 30
משתנה גלובליcount = 0
השמה מרובהlocal a, b = 1, 2
שמונת הטיפוסיםnil, boolean, number, string, table, function, userdata, thread
Nil / בוליאנייםnil, true, false
בדיקת טיפוסtype(x) מחזיר "number"
המרה למספרtonumber("42")
המרה למחרוזתtostring(42)

מחרוזות

מחרוזות אינן ניתנות לשינוי; גם מירכאות בודדות וגם כפולות עובדות.

פעולהתחביר
אורך#s או string.len(s)
שרשורs1 .. s2
אותיות גדולות / קטנותs:upper(), s:lower()
תת-מחרוזתs:sub(1, 3)
חיפוש תת-מחרוזתs:find("ell")
החלפה (gsub)s:gsub("a", "b")
עיצובstring.format("%05d", 42)
מחרוזת ארוכה[[ multi\nline ]]

טבלאות (מבנה הנתונים המרכזי)

טבלאות הן הטיפוס המובנה היחיד של Lua: הן משמשות כמערכים, כ-maps וכאובייקטים.

פעולהתחביר
טבלה ריקהlocal t = {}
בסגנון מערך (מתחיל מ-1)local t = {10, 20, 30}
גישה לאיבר במערךt[1] (האיבר הראשון)
טבלה בסגנון maplocal u = {name = "Ada", age = 30}
גישה לערך ב-mapu.name או u["name"]
הגדרת ערךt[4] = 40, u.email = "a@x.com"
אורך החלק המערכי#t
מעבר על מערך (ipairs)for i, v in ipairs(t) do ... end
מעבר על כל המפתחות (pairs)for k, v in pairs(u) do ... end
טבלה מקוננתlocal m = {a = {1, 2}}

בקרת זרימה

בלוקים נסגרים ב-end; רק nil ו-false נחשבים שקריים.

פעולהתחביר
If / elseif / elseif x > 0 then ... elseif x < 0 then ... else ... end
אופרטורים לוגייםand, or, not
for מספריfor i = 1, 10 do ... end
for עם קפיצהfor i = 10, 1, -1 do ... end
לולאת whilewhile x < 100 do ... end
Repeat-untilrepeat ... until done
Breakbreak
אופרטור לא שווהif a ~= b then ... end

פונקציות

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

פעולהתחביר
הגדרת פונקציהfunction add(a, b) return a + b end
פונקציה מקומיתlocal function square(x) return x * x end
פונקציה אנונימיתlocal f = function(x) return x * 2 end
כמה ערכי החזרהfunction bounds() return 1, 10 end
קבלת כמה ערכי החזרהlocal lo, hi = bounds()
פונקציה עם מספר משתנה של ארגומנטיםfunction sum(...) ... end
איסוף ה-varargslocal args = {...}
מתודה (תחביר נקודתיים)function obj:greet() ... end

ספריית string

פונקציות נפוצות מספריית string (אפשר לקרוא להן גם כ-s:fn()).

פונקציהמה היא עושה
string.len(s)אורך המחרוזת
string.sub(s, i, j)תת-מחרוזת מאינדקס i עד j
string.upper(s)עותק באותיות גדולות
string.rep(s, n)חזרה על המחרוזת n פעמים
string.find(s, p)חיפוש תבנית, מחזירה התחלה/סוף
string.match(s, p)מחזירה את ההתאמה הראשונה לתבנית
string.gsub(s, p, r)החלפת כל ההתאמות לתבנית
string.format(fmt, ...)עיצוב ערכים לתוך מחרוזת

ספריות table ו-math

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

פונקציהמה היא עושה
table.insert(t, v)הוספת ערך לסוף
table.insert(t, i, v)הכנסת v במיקום i
table.remove(t, i)הסרה והחזרה של האיבר במיקום i
table.concat(t, ", ")חיבור האיברים למחרוזת
table.sort(t)מיון המערך במקום
math.floor(x) / math.ceil(x)עיגול למטה / למעלה
math.max(...) / math.min(...)הארגומנט הגדול / הקטן ביותר
math.random(1, 6)מספר שלם אקראי בטווח

Metatables (בקצרה)

Metatables מאפשרות להתאים אישית את ההתנהגות של טבלאות: אופרטורים, גישה לאינדקסים ועוד.

פעולהתחביר
הגדרת metatablesetmetatable(t, mt)
קבלת metatablegetmetatable(t)
ערך חלופי למפתחות חסריםmt.__index = defaults
ברירת מחדל דרך פונקציהmt.__index = function(t, k) ... end
התאמה אישית של חיבורmt.__add = function(a, b) ... end
התאמה אישית של tostringmt.__tostring = function(t) ... end
OOP מבוסס prototypemt.__index = ClassTable

התחביר של Lua שהכי שימושי, בעמוד אחד. ה-Lua cheat sheet הזה הוא דף עזר מהיר לליבת השפה: משתנים וטיפוסים, מחרוזות, בקרת זרימה, פונקציות, והטבלאות שמשמשות כמבנה הנתונים היחיד והגמיש של Lua, וגם הצצה לספריות הסטנדרטיות ול-metatables.

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

שאלות נפוצות על ה-Lua cheat sheet

האם ה-Lua cheat sheet הזה בחינם?
כן. ה-Lua cheat sheet הזה חינמי לגמרי, בלי צורך בהרשמה. שמרו אותו במועדפים וחזרו אליו בכל פעם שצריך לבדוק פעולה על טבלה, פונקציית מחרוזת או מילת מפתח של בקרת זרימה.
איך טבלה ב-Lua יכולה להיות גם מערך וגם map?
טבלה היא פשוט אוסף של זוגות מפתח-ערך, והמפתח יכול להיות כל ערך. כשמשתמשים במפתחות שלמים עוקבים שמתחילים מ-1 ({10, 20, 30}) הטבלה מתנהגת כמו מערך; כשמשתמשים במפתחות מחרוזת ({name = "Ada"}) היא מתנהגת כמו map. אפשר אפילו לשלב את שניהם באותה טבלה. זו הסיבה ש-Lua צריכה רק טיפוס מובנה אחד: הטבלה מכסה מערכים, מילונים, קבוצות ואובייקטים.
למה ב-Lua האינדקסים מתחילים מ-1?
לפי מוסכמה ובתכנון, מערכים ב-Lua מתחילים באינדקס 1 ולא 0: t[1] הוא האיבר הראשון ו-#t הוא מספר האיברים. אופרטור האורך # ופונקציות ספרייה כמו table.insert ו-ipairs מניחים כולם את המוסכמה הזו, ולכן היצמדות אליה שומרת על קוד המערכים שלכם עובד כמצופה.
אפשר לתרגל Lua אונליין?
כן. פתחו את עורך האונליין של Lua כדי להריץ כל קטע קוד מדף העזר הזה בדפדפן, בלי להתקין Lua. כשתרצו מסגרת מסודרת, קורס Lua האינטראקטיבי והחינמי של Coddy לוקח אתכם צעד אחר צעד ממשתנים וטבלאות ועד פונקציות ו-metatables.
האם דף העזר הזה מתאים למתחילים?
כן. הוא מסודר מהנושאים הנפוצים ביותר (משתנים, מחרוזות, טבלאות, בקרת זרימה) ועד המתקדמים (הספריות הסטנדרטיות ו-metatables), כך שאפשר להשתמש בחלקים העליונים כבר מהיום הראשון ולהתקדם לשאר בהמשך.
איור של שפות התכנות ב-Coddy

ללמוד Lua עם Coddy

להתחיל