تعلم Lua في 10 دقائق
Lua هي لغة برمجة خفيفة الوزن، مثالية للتضمين في التطبيقات الأخرى. هل تعلم أنها تستخدم في ألعاب مثل ‘World of Warcraft’ و Roblox؟
1. أول برنامج في Lua
لنبدأ بالأساسيات. أنشئ ملف hello.lua
واكتب:
print("Hello, World!")
احفظه وشغّل في الطرفية:
lua hello.lua
سترى:
Hello, World!
انظر كم هو سهل! print()
تعرض النص على الشاشة.
2. بناء الجملة الأساسي
بناء جملة Lua بسيط جدًا:
-- هذا تعليق من سطر واحد
print("مرحبًا بالعالم!")
--[[
هذا تعليق
متعدد الأسطر
]]
نقاط مهمة:
- التعليقات: سطر واحد
--
، متعدد--[[ ]]
- الجمل: جملة واحدة لكل سطر، لا需要 فاصلة منقوطة
- الحساسية: Lua تميز بين الأحرف الكبيرة والصغيرة
3. المتغيرات وأنواع البيانات
Lua ديناميكية، لا داعي للإعلان عن الأنواع:
-- تعيين مباشر
اسم = "Lua"
عمر = 25
رائع = true
باي = 3.14159
-- تعيين متعدد
x, y, z = 10, 20, 30
-- القيمة الفارغة هي nil
فارغ = nil
print("الاسم:", اسم)
print("العمر:", عمر)
print("رائع؟:", رائع)
أنواع البيانات في Lua:
- nil: لا قيمة
- boolean: true أو false
- number: أرقام (صحيحة وكسور)
- string: نصوص
- table: بنية البيانات العالمية في Lua
- function: دوال (كائنات من الدرجة الأولى)
- userdata: لـ C
- thread: كوروتينات
4. التعامل مع النصوص
-- إنشاء نصوص
str1 = "مرحبًا"
str2 = 'العالم'
str3 = [[نص
متعدد الأسطر]]
-- ربط النصوص بـ ..
رسالة = str1 .. " " .. str2
print(رسالة) -- الإخراج: مرحبًا العالم
-- الطول بـ #
طول = #"مرحبًا"
print(طول) -- الإخراج: 6
-- دوال النص
نص = "hello world"
كبير = نص:upper()
صغير = نص:lower()
جزء = نص:sub(1, 5)
print(كبير) -- الإخراج: HELLO WORLD
print(جزء) -- الإخراج: hello
5. الجداول - الحاوية العالمية
الجداول هي أفضل ميزة في Lua:
-- كمجموعة (الفهارس من 1)
فواكه = {"تفاح", "موز", "كرز"}
print(فواكه[1]) -- الإخراج: تفاح
print(فواكه[2]) -- الإخراج: موز
-- كقاموس
شخص = {
اسم = "أحمد",
عمر = 30,
مدينة = "القاهرة"
}
print(شخص.اسم) -- الإخراج: أحمد
print(شخص["عمر"]) -- الإخراج: 30
--混合 أيضًا يعمل
جدولمختلط = {
"تفاح",
"موز",
لون = "أحمر",
كمية = 5
}
-- عمليات الجداول
فواكه = {"تفاح", "موز"}
table.insert(فواكه, "كرز") -- إضافة للنهاية
table.insert(فواكه, 2, "برتقال") -- إدخال في الموضع
print(table.concat(فواكه, ", ")) -- الإخراج: تفاح, برتقال, موز, كرز
6. هياكل التحكم
-- if
عمر = 18
if عمر >= 18 then
print("أنت بالغ")
elseif عمر >= 13 then
print("أنت مراهق")
else
print("أنت طفل")
end
-- while
عداد = 1
while عداد <= 5 do
print("العداد:", عداد)
عداد = عداد + 1
end
-- for رقمي
for i = 1, 5 do
print("الرقم:", i)
end
-- for بخطوة
for i = 10, 1, -2 do
print("العد التنازلي:", i)
end
-- for للجداول
فواكه = {"تفاح", "موز", "كرز"}
for index, fruit in ipairs(فواكه) do
print(index, fruit)
end
شخص = {اسم = "أحمد", عمر = 30}
for مفتاح, قيمة in pairs(شخص) do
print(مفتاح, قيمة)
end
7. الدوال
-- دالة أساسية
function ترحيب(اسم)
return "مرحبًا, " .. اسم .. "!"
end
رسالة = ترحيب("فاطمة")
print(رسالة) -- الإخراج: مرحبًا, فاطمة!
--多个返回值
function حساب(a, b)
return a + b, a - b, a * b, a / b
end
مجموع, فرق, حاصلضرب, ناتجقسمة = حساب(10, 5)
print("المجموع:", مجموع) -- الإخراج: المجموع: 15
print("الفرق:", فرق) -- الإخراج: الفرق: 5
-- دالة مجهولة (lambda)
ضرب = function(x, y)
return x * y
end
نتيجة = ضرب(4, 5)
print(نتيجة) -- الإخراج: 20
-- دوال كمعاملات
function تنفيذعملية(x, y, عملية)
return عملية(x, y)
end
نتيجة = تنفيذعملية(6, 7, ضرب)
print(نتيجة) -- الإخراج: 42
8. الوحدات
نظم الكود في وحدات. أنشئ ادواترياضية.lua
:
-- ادواترياضية.lua
local ادواترياضية = {}
function ادواترياضية.جمع(a, b)
return a + b
end
function ادواترياضية.ضرب(a, b)
return a * b
end
return ادواترياضية
استخدم في الملف الرئيسي:
-- رئيسي.lua
local ادواترياضية = require("ادواترياضية")
نتيجة = ادواترياضية.جمع(10, 5)
print("نتيجة الجمع:", نتيجة) -- الإخراج: نتيجة الجمع: 15
نتيجة = ادواترياضية.ضرب(4, 6)
print("نتيجة الضرب:", نتيجة) -- الإخراج: نتيجة الضرب: 24
9. معالجة الأخطاء
-- التقاط الأخطاء بـ pcall
function عمليةخطيرة()
error("حدث خطأ!")
end
-- pcall يستدعي بشكل محمي
نجاح, نتيجة = pcall(عمليةخطيرة)
if نجاح then
print("نجاح:", نتيجة)
else
print("فشل:", نتيجة)
end
-- أخطاء مخصصة
function قسمة(a, b)
if b == 0 then
error("القسمة على صفر غير مسموحة")
end
return a / b
end
نجاح, نتيجة = pcall(قسمة, 10, 0)
if not نجاح then
print("خطأ:", نتيجة)
end
10. أمثلة عملية
-- آلة حاسبة بسيطة
function آلةحاسبة()
print("🐮 آلة حاسبة بسيطة")
print("1. جمع")
print("2. طرح")
print("3. ضرب")
print("4. قسمة")
اختيار = tonumber(io.read())
print("الرقم الأول:")
رقم1 = tonumber(io.read())
print("الرقم الثاني:")
رقم2 = tonumber(io.read())
if اختيار == 1 then
نتيجة = رقم1 + رقم2
print("النتيجة:", نتيجة)
elseif اختيار == 2 then
نتيجة = رقم1 - رقم2
print("النتيجة:", نتيجة)
elseif اختيار == 3 then
نتيجة = رقم1 * رقم2
print("النتيجة:", نتيجة)
elseif اختيار == 4 then
if رقم2 ~= 0 then
نتيجة = رقم1 / رقم2
print("النتيجة:", نتيجة)
else
print("❌ قسمة على صفر")
end
else
print("🤔 اختيار غير صحيح")
end
end
-- للاستخدام، أزل التعليق
-- آلةحاسبة()
-- عمليات الملفات
function قراءةملف(اسمملف)
local ملف = io.open(اسمملف, "r")
if not ملف then
return nil, "لا يمكن فتح الملف"
end
local محتوى = ملف:read("*a")
ملف:close()
return محتوى
end
محتوى, خطأ = قراءةملف("مثال.txt")
if محتوى then
print("محتوى الملف:", محتوى)
else
print("خطأ:", خطأ)
end
خاتمة
Lua رائعة! مثالية ل:
- 🎮 برمجة الألعاب (الكثير من الألعاب تستخدمها)
- 🔧 التطبيقات المضمنة (لخفتها)
- ⚙️ ملفات الإعدادات والأتمتة
- 🚀 scenarios الأداء العالي (مع LuaJIT)
أفضل ما في Lua:
- خفيفة الوزن: تشغل مساحة صغيرة
- سريعة: LuaJIT سريع جدًا
- مرنة: typing ديناميكي + جداول عالمية
- محمولة: تعمل على الهواتف والخوادم
- سهلة التضمين: تتعامل جيدًا مع C/C++
تريد التعلم أكثر؟ جرب:
- مكتبة Lua القياسية
- كوروتينات (برمجة متزامنة)
- Metatables و metamethods (لـ OOP)
- Lua C API
- Love2D لتطوير الألعاب
Lua سهلة التعلم وقوية! 🚀