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

تظليل المتغيرات في `if`

جزء من قسم Fundamentals في رحلة GO على Coddy — الدرس 37 من 109.

دعونا نتعلم عن تظليل المتغيرات (variable shadowing) في جمل if. يتيح لك هذا إنشاء متغير موجود فقط داخل كتلة if والكتل المرتبطة بها من نوع else.

أولاً، لنقم بإنشاء متغير خارج جملتنا الشرطية:

x := 10
fmt.Println("Original x value:", x)

بعد تنفيذ هذا الكود، سيكون لدينا متغير x بقيمة 10 يمكننا استخدامه في جميع أنحاء برنامجنا.

الآن، دعونا نستخدم تظليل المتغيرات (variable shadowing) في جملة if لإنشاء متغير جديد يوجد فقط داخل تلك الكتلة البرمجية:

if y := x * 2; y > 15 {
    fmt.Println("y is greater than 15:", y)
    // y يوجد فقط في هذه الكتلة
} else {
    fmt.Println("y is not greater than 15:", y)
    // y متاح أيضاً في كتل else
}

بعد تنفيذ هذا الكود، سيقوم Go بحساب y كـ 20 (والذي هو x * 2)، والتحقق مما إذا كان أكبر من 15، ثم تنفيذ الكتلة البرمجية الأولى. سيظهر المخرج على الشاشة:

y is greater than 15: 20

أخيرًا، دعنا نحاول الوصول إلى متغيراتنا بعد جملة if:

// fmt.Println(y) سيؤدي إلى حدوث خطأ - y غير موجود هنا
fmt.Println("x is still:", x)

بعد تنفيذ هذا الكود، لا يزال بإمكاننا الوصول إلى x، ولكن y لم يعد متاحاً لأنه كان موجوداً فقط داخل كتل if و else. سيظهر المخرج على الشاشة:

x is still: 10

يوضح هذا كيفية عمل تظليل المتغيرات (variable shadowing) في جمل if - المتغير y متاح فقط داخل الكتل الشرطية التي تم التصريح عنه فيها.

challenge icon

التحدي

مبتدئ

في هذا التحدي، ستتدرب على تظليل المتغيرات (variable shadowing) في جملة if. سترى كيف يمكن لمتغير تم التصريح عنه داخل كتلة if أن يحمل نفس اسم متغير في النطاق الخارجي، ولكن بقيمة مختلفة.

يحتوي الكود على متغير message في النطاق الخارجي. مهمتك هي إنشاء متغير مظلل بنفس الاسم داخل كتلة if ثم طباعة كلا المتغيرين لرؤية تأثير التظليل.

ورقة مرجعية

يتيح لك تظليل المتغيرات (Variable shadowing) في جمل if إنشاء متغيرات توجد فقط داخل الكتلة الشرطية وكتل else المرتبطة بها.

بناء الجملة (Syntax) لتظليل المتغيرات في جمل if:

if variable := expression; condition {
    // المتغير موجود فقط في هذه الكتلة
} else {
    // المتغير متاح أيضًا في كتل else
}

مثال:

x := 10
if y := x * 2; y > 15 {
    fmt.Println("y is greater than 15:", y)
} else {
    fmt.Println("y is not greater than 15:", y)
}
// لا يمكن الوصول إلى y هنا بعد الآن
fmt.Println("x is still:", x)

المتغير المظلل متاح فقط داخل كتل if و else حيث تم التصريح عنه، وليس خارجها.

جرّب بنفسك

package main

import "fmt"

func main() {
	// متغير النطاق الخارجي
	message := "Hello from outer scope"
	
	isLoggedIn := true
	
	if isLoggedIn {
		// TODO: قم بإنشاء متغير جديد باسم 'message' بالقيمة "Hello from inner scope"
		
		// هذا يطبع رسالة النطاق الداخلي
		fmt.Println(message)
	}
	
	// هذا يطبع رسالة النطاق الخارجي
	fmt.Println(message)
}
quiz iconاختبر نفسك

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

جميع دروس Fundamentals