Menu
CoddyTech
flag Ar iconالعربيةdown icon

عبارات الحراسة

جزء من قسم المنطق وتدفّق التنفيذ في رحلة GDScript على Coddy. الدرس 68 من 78.

عندما تحتاج دالة إلى عدة عمليات تحقق، فإن وضع if داخل آخر يدفع العمل الفعلي إلى مستويات أعمق فأعمق:

func buy(gold: int, price: int) -> String:
	if price > 0:
		if gold >= price:
			return "Bought! %d gold left" % (gold - price)
		else:
			return "Not enough gold"
	else:
		return "Invalid price"

يعكس شرط الحراسة هذا الترتيب. فهو يتحقق من حالة واحدة غير صالحة في بداية الدالة ويخرج فورًا باستخدام return. لا يُنفَّذ الكود بعد شروط الحراسة إلا مع القيم الصالحة، ولا يحتاج إلى تداخل:

func buy(gold: int, price: int) -> String:
	if price <= 0:
		return "Invalid price"
	if gold < price:
		return "Not enough gold"
	return "Bought! %d gold left" % (gold - price)

buy(50, 30) تُرجع Bought! 20 gold left، وbuy(10, 30) تُرجع Not enough gold، وbuy(50, 0) تُرجع Invalid price.

ترتيب الشروط الحارسة مهم: يجب أن يأتي الشرط الحارس الذي يحمي سطرًا قبله. تحقّق من النص باستخدام is_valid_int() قبل استخدام الرقم، وتحقّق من أن القيمة ليست صفرًا قبل القسمة:

func share(coins: int, players: int) -> int:
	if players <= 0:
		return 0
	return coins / players

في دالة -> void، يكون الحارس عبارة عن return بمفرده. داخل حلقة، تعمل continue كحارس لعنصر واحد: فهي تتجاوز العنصر غير الصالح وتتابع الحلقة مع العنصر التالي.

challenge icon

التحدي

سهل

اكتب الدالة process_data. تأخذ سلسلة نصية text وتُرجع سلسلة نصية:

  1. إذا لم تكن text عددًا صحيحًا، فأعِد Input must be a number!
  2. إذا كان العدد 0، فأعِد Cannot divide by zero!
  3. خلاف ذلك، اقسم 100.0 على العدد وأعِد النتيجة بمنزلتين عشريتين

على سبيل المثال، تُرجع process_data("8") القيمة 12.50، وتُرجع process_data("-5") القيمة -20.00، وتُرجع process_data("abc") القيمة Input must be a number!.

اكتب الشرطين كعبارتي حراسة في بداية الدالة.

جرّب بنفسك

func process_data(text: String):
	# اكتب الكود هنا
	pass
quiz iconاختبر نفسك

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

جميع دروس المنطق وتدفّق التنفيذ

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