النطاق والكتل البرمجية
جزء من قسم الأساسيات في رحلة 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'التقييم قصير الدائرةقيم Truthy و Falsyمراجعة - المنطق البسيط10الجداول الجزء 1: نمط القائمة
ما هو الجدول؟إنشاء جدولالوصول إلى العناصر عبر الفهرستعديل العناصر عبر الفهرسمعامل الطول '#'table.insert()table.remove()ملخص - إدارة أعضاء الفريق13مشروع: متجر جرعات بسيط
إعداد المشروعإضافة جرعة2المتغيرات وأنواع البيانات
ما هو المتغير؟الأرقامالسلاسل النصيةالقيم المنطقيةالقيمة 'nil'الدالة type()قواعد التسميةمراجعة - ملف الشخصية5الإخراج الأساسي
طباعة القيم الحرفيةطباعة المتغيراتطباعة قيم متعددةدمج النصوص والمتغيراتدالة tostring()الإدخال (Input)التحويل (Cast)مراجعة - تقرير الحالةمراجعة - حتى 1208أساسيات معالجة النصوص
string.len()string.upper و string.lowerstring.sub()string.rep()string.find()مراجعة - تنسيق اسم المستخدم11الجداول 2: بأسلوب القاموس
أزواج (مفتاح-قيمة)إنشاء جداول بأسلوب القاموسالوصول - تدوين الأقواسالوصول بتدوين النقطةإضافة وتعديل الأزواجإزالة الأزواج باستخدام nilمراجعة - خصائص العناصر14نطاق المتغيرات
المتغيرات العامةالمتغيرات المحليةلماذا نستخدم المتغيرات المحلية؟النطاق والكتل البرمجيةمراجعة - لغز النطاق3المعاملات 1: العمليات الحسابية والدمج
المعاملات الحسابيةمعامل باقي القسمةمعامل الأسدمج النصوصأولوية المعاملاتملخص - حسابات بسيطة6مشروع: عرض إحصائيات الشخصية
رسالة ترحيبتعريف إحصائيات الشخصية9أساسيات الدوال
تعريف دالةاستدعاء دالةدوال مع معاملاتدوال بمعاملات متعددةجملة 'return'مراجعة - حاسبة المساحة12أساسيات الحلقات التكرارية
حلقة whileحلقة repeat-untilحلقة for الرقميةحلقة for مع خطوةجملة 'break'مراجعة - العد التنازليتدرّب بنفسك: مترجم Lua عبر الإنترنت