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

التعدادات في Match

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

يمكن لعبارة match مقارنة قيمة بخيارات التعداد. كل نمط هو أحد الخيارات، ويُكتب باستخدام اسم التعداد:

enum Light { RED, YELLOW, GREEN }

func _ready():
	var light := Light.YELLOW
	match light:
		Light.RED:
			print("Stop")
		Light.YELLOW:
			print("Slow down")
		Light.GREEN:
			print("Go")

يطبع هذا Slow down. وكما في كل match، يمكن لعدة خيارات أن تشترك في فرع واحد، وتُفصل بينها فواصل، ويلتقط _ كل ما عدا ذلك:

match light:
	Light.RED, Light.YELLOW:
		print("Wait")
	_:
		print("Go")

تحتاج الدالة التي تُرجع قيمة إلى return في كل مسار. حتى عندما تغطي الفروع جميع الخيارات، يُصدر GDScript الخطأ Not all code paths return a value ما لم يتضمن match فرعًا _ أو يتبعه return:

func next_light(light: Light) -> Light:
	match light:
		Light.RED:
			return Light.GREEN
		Light.GREEN:
			return Light.YELLOW
		_:
			return Light.RED

المعامل ونوع القيمة المُعادة هما التعداد Light. تُعلَن الدالة في المستوى الأعلى، مثل التعداد.

challenge icon

التحدي

سهل

يُعرّف البرنامج النصي التعداد State بالخيارات IDLE وWALK وRUN وJUMP وFALL. أكمل الدالة describe(): تستقبل حالةً وتُعيد وصفها، ويُختار الوصف باستخدام match:

  • State.IDLE: "Standing still"
  • State.WALK وState.RUN: "Moving"
  • State.JUMP وState.FALL: "In the air"

استخدم فرعًا واحدًا لـWALK وRUN، وآخر لـJUMP وFALL. يقرأ الكود المعطى في _ready() سطرًا من أسماء الحالات ويطبع كل اسم مع وصفه. عند الإدخال IDLE RUN FALL، يكون الإخراج:

IDLE: Standing still
RUN: Moving
FALL: In the air

جرّب بنفسك

extends Node

enum State { IDLE, WALK, RUN, JUMP, FALL }

func describe(state: State):
	# أعِد وصف الحالة باستخدام match
	pass

func _ready():
	var names := OS.read_string_from_stdin().split(" ", false)
	for state_name in names:
		print(state_name, ": ", describe(State[state_name]))
quiz iconاختبر نفسك

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

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

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