Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ورقة Lua المرجعية

آخر تحديث

Hello World وتشغيل الكود

Lua بسيطة - عبارة واحدة تعمل.

العمليةالصياغة
طباعة سطرprint("Hello, World!")
طباعة عدة قيمprint("x", 1, true)
الكتابة دون سطر جديدio.write("Hi")
تعليق-- this is a comment
تعليق متعدد الأسطر--[[ ... ]]
دمج السلاسل النصيةprint("Hi " .. name)
تشغيل ملفlua app.lua
صدفة تفاعلية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 - تعمل كمصفوفات وخرائط وكائنات.

العمليةالصياغة
جدول فارغlocal t = {}
بنمط المصفوفة (يبدأ من 1)local t = {10, 20, 30}
الوصول إلى عنصر مصفوفةt[1] (العنصر الأول)
جدول بنمط الخريطةlocal u = {name = "Ada", age = 30}
الوصول إلى قيمة خريطةu.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
جمع الوسائط المتغيرةlocal args = {...}
دالة (صياغة النقطتين)function obj:greet() ... end

مكتبة السلاسل النصية

دوال شائعة من مكتبة السلاسل النصية (قابلة للنداء كـ 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.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)عدد صحيح عشوائي ضمن نطاق

الجداول الوصفية (باختصار)

تتيح لك الجداول الوصفية تخصيص سلوك الجداول - العوامل والفهرسة وغيرها.

العمليةالصياغة
تعيين جدول وصفيsetmetatable(t, mt)
الحصول على جدول وصفيgetmetatable(t)
احتياطي للمفاتيح المفقودةmt.__index = defaults
الافتراضي عبر دالةmt.__index = function(t, k) ... end
تخصيص الجمعmt.__add = function(a, b) ... end
تخصيص tostringmt.__tostring = function(t) ... end
برمجة كائنية بنمط النماذج الأوليةmt.__index = ClassTable

صياغة Lua التي تستخدمها أكثر من غيرها، على صفحة واحدة. ورقة Lua المرجعية هذه هي مرجع سريع للّغة الأساسية - المتغيرات والأنواع، والسلاسل النصية، والتحكم في التدفق، والدوال، والجداول التي تعمل كهيكل البيانات الوحيد والمرن في Lua، بالإضافة إلى لمحة عن المكتبات القياسية والجداول الوصفية.

كل ما هنا هو Lua قياسية تعمل على مفسّر اعتيادي. انسخ ما تحتاجه، أو جرّب كل مقطع برمجي مباشرة في playground الخاص بـ Lua - دون الحاجة إلى أي تثبيت.

الأسئلة الشائعة حول ورقة Lua المرجعية

هل ورقة Lua المرجعية هذه مجانية؟
نعم. ورقة Lua المرجعية هذه مجانية تمامًا، دون الحاجة إلى التسجيل. أضِفها إلى المفضلة وارجع إليها متى احتجت إلى البحث عن عملية على جدول أو دالة سلاسل نصية أو كلمة تحكم في التدفق.
كيف يمكن لجدول Lua أن يكون مصفوفة وخريطة معًا؟
الجدول مجرد مجموعة من أزواج المفتاح-القيمة، ويمكن أن يكون المفتاح أيّ قيمة. فعندما تستخدم مفاتيح عددية متتالية تبدأ من 1 ({10, 20, 30}) يتصرّف الجدول كمصفوفة؛ وعندما تستخدم مفاتيح نصية ({name = "Ada"}) يتصرّف كخريطة. ويمكنك حتى مزج الاثنين في الجدول نفسه. ولهذا تحتاج Lua إلى نوع مهيكل واحد فقط - فالجدول يغطّي المصفوفات والقواميس والمجموعات والكائنات.
لماذا تستخدم Lua الفهرسة التي تبدأ من 1؟
بحكم العُرف والتصميم، تبدأ مصفوفات Lua من الفهرس 1 وليس 0 - فـ t[1] هو العنصر الأول و #t هو العدد. ويفترض عامل الطول # ودوال المكتبة مثل table.insert و ipairs جميعها هذا العُرف الذي يبدأ من 1، لذا فإن الالتزام به يُبقي كود مصفوفاتك يعمل كما هو متوقّع.
هل يمكنني التدرّب على Lua عبر الإنترنت؟
نعم. افتح playground الخاص بـ Lua لتشغيل أيّ مقطع برمجي من هذه الورقة المرجعية في متصفحك - دون الحاجة إلى تثبيت Lua. وعندما ترغب في تعلّم منظّم، تأخذك دورة Lua التفاعلية المجانية من Coddy من المتغيرات والجداول إلى الدوال والجداول الوصفية خطوة بخطوة.
هل هذه الورقة المرجعية مناسبة للمبتدئين؟
نعم. إنها مرتّبة من المواضيع الأكثر شيوعًا (المتغيرات والسلاسل النصية والجداول والتحكم في التدفق) وصولًا إلى المتقدمة (المكتبات القياسية والجداول الوصفية)، بحيث يمكنك استخدام الأقسام العلوية من اليوم الأول والتدرّج إلى البقية.
Coddy programming languages illustration

تعلّم Lua مع Coddy

ابدأ الآن