جويدو فان روسوم
يشبه التنفيذ الجديد إلى حد كبير عامل التشغيل "المطابقة" المتوفر في Scala وRust وF#، والذي يقارن نتيجة تعبير محدد بقائمة من الأنماط المدرجة في الكتل بناءً على عامل التشغيل "الحالة". على عكس عامل التشغيل "switch" المتوفر في لغات C وJava وJavaScript، فإن التعبيرات المستندة إلى "match" تقدم أكثر من ذلك بكثير
تعريف http_error(الحالة):
حالة المباراة:
القضية 400:
عودة "طلب سيء"
الحالة 401|403|404:
العودة "غير مسموح"
القضية 418:
العودة "أنا إبريق الشاي"
قضية _:
العودة "شيء آخر"
على سبيل المثال، يمكنك فك حزم الكائنات والصفوف والقوائم والتسلسلات العشوائية لربط المتغيرات بناءً على القيم الموجودة. يُسمح بتعريف القوالب المتداخلة، واستخدام شروط "if" إضافية في القالب، واستخدام الأقنعة ("[x، y، *rest]")، وتعيينات المفاتيح/القيمة (على سبيل المثال، {"bandwidth": b، "latency ": l} لاستخراج قيم "النطاق الترددي" و"زمن الوصول" والقاموس)، واستخراج القوالب الفرعية (:=" عامل التشغيل)، واستخدام الثوابت المسماة في القالب. في الفصول الدراسية، من الممكن تخصيص سلوك المطابقة باستخدام طريقة "__match__()".
من فئات البيانات استيراد فئة البيانات
@dataclass
نقطة الفئة:
س:كثافة العمليات
ذ:كثافة العمليات
بالتأكيد حيث (نقطة):
نقطة تلاقي:
نقطة الحالة (0، 0):
طباعة ("الأصل")
نقطة الحالة (0، ص):
طباعة (و"ص={ص}")
نقطة الحالة (س، 0):
طباعة (و"X={x}")
نقطة الحالة ():
طباعة ("في مكان آخر")
قضية _:
طباعة ("ليست نقطة")
نقطة تلاقي:
نقطة الحالة (x، y) إذا كانت x == y:
طباعة (f"Y=X في {x}")
نقطة الحالة (س، ص):
طباعة (و"ليس على القطر")
الأحمر، الأخضر، الأزرق = 0، 1، 2
تتطابق اللون:
حالة.أحمر:
طباعة ("أرى اللون الأحمر!")
حالة.الأخضر:
طباعة ("العشب أخضر")
حالة .BLU
E:
طباعة ("أشعر بالكآبة :(")
تم إعداد مجموعة للمراجعة
المصدر: opennet.ru