الجداول (Tables)
الجداول هي بنية البيانات الأساسية في Lua، تشبه القوائم في بايثون أو المصفوفات في جافا سكريبت. تُستخدم لتخزين البيانات المنظمة مثل الأسعار أو المواقع أو النتائج.
Formes alternatives
- — جدول ذو مفاتيح رقمية متسلسلة بدءًا من 1
| Symbole | Signification | Unité |
|---|---|---|
| t | اسم الجدول يجب أن يكون اسمًا صالحًا في Lua (بدء بحرف أو شرطة سفلية) | |
| key1 | المفتاح الأول يمكن أن يكون نصيًا أو رقميًا | |
| value1 | القيمة الأولى أي نوع بيانات صالح في Lua |
Exemple : في أبو ظبي، قم بإنشاء جدول لحفظ أسعار المنتجات في سوق الذهب: local gold_prices = {twenty_four_k = 245.5, eighteen_k = 187.3, fourteen_k = 132.8} → gol.twent_k = 245.5 درهم للغرام
Formes alternatives
- — الترميز باستخدام الأقواس المربعة، مفيد للمفاتيح التي تحتوي على مسافات أو أرقام
| Symbole | Signification | Unité |
|---|---|---|
| t | اسم الجدول يجب أن يكون الجدول قد تم تعريفه مسبقًا | |
| key | المفتاح يجب أن يكون المفتاح موجودًا في الجدول |
Exemple : استخراج سعر الذهب عيار 24: local price = gold_prices.twenty_four_k → 245.5 درهم للغرام
| Symbole | Signification | Unité |
|---|---|---|
| t | اسم الجدول الجدول الذي تريد تعديله | |
| المفتاح الجديد يمكن أن يكون نصيًا أو رقميًا | ||
| القيمة الجديدة أي نوع بيانات صالح |
Exemple : إضافة سعر الذهب عيار 10: gold_prices.ten_k = 98.7 → gol.te = 98.7 درهم للغرام
| Symbole | Signification | Unité |
|---|---|---|
| key | المفتاح الحالي يتم تحديثه تلقائيًا في كل تكرار | |
| value | القيمة الحالية القيمة المرتبطة بالمفتاح | |
| t | الجدول المراد تكراره يجب أن يكون جدولاً صالحاً |
Exemple : طباعة جميع أسعار الذهب: for type, price in pairs(gold_prices) do print(type .. ': ' .. price .. ' درهم/غرام') end
الدوال (Functions)
الدوال هي اللبنات الأساسية في Lua. تسمح بتجميع الكود وإعادة استخدامه. يمكن تعريفها بعدة طرق.
| Symbole | Signification | Unité |
|---|---|---|
| name | اسم الدالة يجب أن يكون اسمًا صالحًا في Lua | |
| args | المعاملات قائمة المعاملات مفصولة بفواصل (اختياري) |
Exemple : دالة لحساب سعر الذهب بناءً على الوزن: function calculate_gold_price(weight) return weight * gold_prices.twenty_four_k end
| Symbole | Signification | Unité |
|---|---|---|
| f | اسم المتغير الذي يحمل الدالة يمكن تمريره كوسيط لدوال أخرى | |
| args | المعاملات قائمة المعاملات مفصولة بفواصل (اختياري) |
Exemple : دالة لحساب السعر مع الخصم: local apply_discount = function(price, discount) return price * (1 - discount/100) end
| Symbole | Signification | Unité |
|---|---|---|
| name | اسم الدالة يجب أن تكون الدالة قد تم تعريفها مسبقًا | |
| args | المعاملات قائمة القيم مفصولة بفواصل |
Exemple : استخدام الدالة لحساب سعر 10 غرامات ذهب: local total = calculate_gold_price(10) → 2455 درهم
هياكل التحكم (Control Structures)
تتحكم هياكل التحكم في تسلسل تنفيذ الكود في Lua. تشمل الشروط والحلقات.
| Symbole | Signification | Unité |
|---|---|---|
| condition1 | الشروط الأولى يجب أن تكون تعبيرًا منطقيًا (boolean) | |
| condition2 | الشروط الثانية اختياري |
Exemple : التحقق من سعر الذهب قبل الشراء: if gold_prices.twenty_four_k < 250 then print('اشترِ!') else print('انتظر') end
| Symbole | Signification | Unité |
|---|---|---|
| i | متغير العد يتم تحديثه تلقائيًا | |
| start | القيمة الابتدائية يجب أن تكون عددًا | |
| end | القيمة النهائية يجب أن تكون عددًا | |
| step | الخطوة اختياري، القيمة الافتراضية 1 |
Exemple : طباعة جدول الضرب للعدد 5: for i = 1, 10 do print(i .. ' × 5 = ' .. i*5) end
| Symbole | Signification | Unité |
|---|---|---|
| condition | الشروط يجب أن تكون تعبيرًا منطقيًا (boolean) |
Exemple : الانتظار حتى ينخفض سعر الذهب: while gold_prices.twenty_four_k > 240 do os.execute('sleep 60') end
السلاسل النصية (Strings)
توفر Lua مجموعة غنية من الدوال للتعامل مع السلاسل النصية، وهي أساسية لمعالجة البيانات النصية.
Formes alternatives
- <<var:len>> = #<<var:s>> ParseError: Expected 'EOF', got '#' at position 15: <<var:len>> = #̲<<var:s>> — الطريقة المختصرة للحصول على طول السلسلة
| Symbole | Signification | Unité |
|---|---|---|
| len | الطول عدد الأحرف في السلسلة | |
| s | السلسلة النصية يجب أن تكون سلسلة نصية صالحة |
Exemple : حساب طول اسم المنتج: local product_name = 'هاتف ذكي' → #product_name = 8 أحرف
| Symbole | Signification | Unité |
|---|---|---|
| sub | الجزء المستخرج سلسلة نصية جزئية | |
| s | السلسلة الأصلية يجب أن تكون سلسلة نصية صالحة | |
| i | البداية الرقم الأول (1-based) | |
| j | النهاية الرقم الأخير (اختياري، إذا لم يذكر، إلى النهاية) |
Exemple : استخراج الكود البريدي من عنوان في دبي: local address = 'دبي، شارع الشيخ زايد، 12345' → string.sub(address, -5) = '12345'
| Symbole | Signification | Unité |
|---|---|---|
| match | الجزء المطابق الجزء الذي تطابق النمط | |
| s | السلسلة الأصلية يجب أن تكون سلسلة نصية صالحة | |
| pattern | النمط نمط البحث (مثل '%d+' للبحث عن أرقام) |
Exemple : استخراج السعر من نص: local text = 'السعر: 250 درهم' → string.match(text, '%d+') = '250'
الملفات (File I/O)
تسمح Lua بقراءة وكتابة الملفات، وهو أمر أساسي لحفظ البيانات أو معالجة الملفات الخارجية.
| Symbole | Signification | Unité |
|---|---|---|
| file | الكائن الملف يتم استخدامه لقراءة/كتابة الملف | |
| filename | اسم الملف مسار الملف (مثل 'data.txt') | |
| mode | الوضع 'r' للقراءة، 'w' للكتابة، 'a' للإلحاق |
Exemple : فتح ملف لحفظ بيانات الذهب: local file = io.open('gold_prices.txt', 'w')
Formes alternatives
- — قراءة سطر واحد (بدون '*a')
| Symbole | Signification | Unité |
|---|---|---|
| content | المحتوى المقروء جميع محتوى الملف | |
| file | الكائن الملف يجب أن يكون مفتوحًا للقراءة |
Exemple : قراءة جميع البيانات من ملف الذهب: local data = file:read('*a')
| Symbole | Signification | Unité |
|---|---|---|
| file | الكائن الملف يجب أن يكون مفتوحًا للكتابة | |
| data | البيانات المكتوبة أي سلسلة نصية |
Exemple : كتابة سعر الذهب إلى ملف: file:write('24K: 245.5\n')
| Symbole | Signification | Unité |
|---|---|---|
| file | الكائن الملف يجب أن يكون مفتوحًا |
Exemple : إغلاق ملف الذهب بعد الكتابة: file:close()
الجداول الفوقية (Metatables)
الجداول الفوقية تسمح بتعديل سلوك الجداول في Lua، مثل تعريف سلوك الجمع أو الوصول إلى المفاتيح الغير موجودة.
| Symbole | Signification | Unité |
|---|---|---|
| mt | الجدول الفوقي يتم استخدامه لتعريف السلوكيات الفوقية |
Exemple : إنشاء جدول فوقي للجمع التلقائي: local mt = {}
| Symbole | Signification | Unité |
|---|---|---|
| t | الجدول المراد تعديله الجدول الذي تريد إضافة سلوك فوقي له | |
| mt | الجدول الفوقي الجدول الفوقي الذي يحتوي على السلوكيات |
Exemple : ربط الجدول الفوقي بجدول الذهب: setmetatable(gold_prices, mt)
| Symbole | Signification | Unité |
|---|---|---|
| t | الجدول الجدول الذي تم الوصول إليه | |
| key | المفتاح المفتاح الذي لم يوجد |
Exemple : عند الوصول إلى مفتاح غير موجود، إرجاع سعر افتراضي: mt.__index = function(t, key) return 0 end