Menu
CoddyTech

النطاق والكتل البرمجية

جزء من قسم الأساسيات في رحلة 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 بيئةً معزولة خاصة بها للمتغيرات المحلية. لا يمكن للمتغيرات المُعلنة داخل كتلة أن تخرج إلى النطاق الخارجي، بينما يمكن الوصول إلى المتغيرات من النطاقات الخارجية من داخل الكتل الداخلية.

challenge icon

التحدي

سهل

أنشئ كتل do...end متداخلة لتوضيح كيف تبقى المتغيرات المحلية التي تحمل الاسم نفسه منفصلة تمامًا في النطاقات المختلفة.

أولًا، أنشئ متغيرًا محليًا باسم playerLevel وقيمته 10 في النطاق الخارجي، ثم اطبعه.

بعد ذلك، أنشئ كتلة do...end وداخلها:

  • صرّح عن متغير محلي جديد اسمه أيضًا playerLevel وقيمته 25
  • اطبع هذا المتغير الداخلي playerLevel

بعد انتهاء الكتلة الداخلية، اطبع المتغير الخارجي playerLevel مرة أخرى لتوضيح أنه بقي دون تغيير.

يوضح هذا أن المتغيرات المحلية ذات الأسماء المتطابقة في النطاقات المختلفة مستقلة تمامًا؛ فالمتغير الداخلي لا يؤثر في المتغير الخارجي.

جرّب بنفسك

-- TODO: اكتب شيفرتك هنا
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات

تدرّب بنفسك: مترجم Lua عبر الإنترنت