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

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

جزء من قسم الأساسيات في رحلة Lua على Coddy — الدرس 86 من 90.

في لغة Lua، يمكنك إنشاء نطاقات (scopes) جديدة في أي مكان في الكود الخاص بك باستخدام كتل do...end. تسمح لك هذه الكتل بالتحكم بدقة في الأماكن التي يمكن فيها الوصول إلى متغيراتك المحلية، مما يمنحك تحكماً دقيقاً في نطاق المتغيرات.

إليك كيفية إنشاء نطاق جديد باستخدام كتلة do...end:

local outerVar = "I'm outside"

do
    local innerVar = "I'm inside"
    print(outerVar)  -- هذا يعمل
    print(innerVar)  -- هذا يعمل أيضاً
end

print(outerVar)  -- هذا يعمل
print(innerVar)  -- هذا سيؤدي إلى حدوث خطأ!

الجانب القوي في النطاق (scope) هو أنه يمكنك الحصول على متغيرات محلية بنفس الاسم في كتل برمجية مختلفة، وتظل منفصلة تماماً:

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اختبر نفسك

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

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