التعدادات في 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. تُعلَن الدالة في المستوى الأعلى، مثل التعداد.
التحدي
سهليُعرّف البرنامج النصي التعداد 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]))
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفّق التنفيذ
1السلاسل النصية بالتفصيل
أساليب السلاسل النصيةالبحث داخل السلاسل النصيةالاستبدال وإزالة المسافات الطرفيةالتقسيم والدمجمراجعة - التحقق من اسم المستخدم4القواميس، الجزء الثاني
القواميس المتداخلةمصفوفات من القواميسدمج القواميسنسخ القواميسمراجعة - عدّ التكرارات2اتخاذ القرارات المتقدم
المطابقة باستخدام المتغيراتشروط المطابقةأنماط المصفوفاتأنماط القواميسالتحقق من العضويةمراجعة - محلل الأوامر5تطبيق دفتر جهات الاتصال
عرض القائمةإضافة جهة اتصال8مدير سجلات الطلاب
نظرة عامة على المشروعإضافة طالب3المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادالمصفوفات المتعرجةأنماط شائعة للمصفوفات ثنائية الأبعادمراجعة - لوحة اللعبة6المجموعات باستخدام القواميس
ما هي المجموعة؟القاموس كمجموعةالإضافة والإزالةالاتحاد والتقاطعفرق المجموعاتمراجعة - إزالة العناصر المكررة9تجميع البيانات المتقدم
جمع القيمإيجاد الحد الأدنى والحد الأقصىالترتيب المخصصمراجعة - أداة ترتيب القواميستدرّب بنفسك: مترجم GDScript عبر الإنترنت