Guido van Rossum
Yeni tətbiq Scala, Rust və F#-da təqdim olunan "uyğunluq" operatoruna çox bənzəyir ki, bu da müəyyən edilmiş ifadənin nəticəsini "case" operatoru əsasında bloklarda sadalanan nümunələrin siyahısı ilə müqayisə edir. C, Java və JavaScript-də mövcud olan "keçid" operatorundan fərqli olaraq, "uyğunluq" əsaslı ifadələr daha çox şey təklif edir.
def http_error(status):
uyğunluq vəziyyəti:
iş 400:
"Səhv sorğu"nu qaytarın
hal 401|403|404:
"İcazə verilmir" qaytarın
iş 418:
"Mən çaydanam" sözünə qayıt
hal_:
"Başqa bir şey" qaytarın
Məsələn, mövcud dəyərlərə əsaslanan dəyişənləri bağlamaq üçün obyektləri, dəstləri, siyahıları və ixtiyari ardıcıllıqları paketdən çıxara bilərsiniz. İç-içə şablonları müəyyən etməyə, şablonda əlavə “if” şərtlərindən istifadə etməyə, maskalardan (“[x, y, *rest]”), açar/dəyər xəritələrindən istifadə etməyə (məsələn, {“bandwidth”: b, “latency”) icazə verilir. ”: l} "bant genişliyi" və "gecikmə" dəyərlərini və lüğəti çıxarmaq üçün, alt şablonları çıxarın (":=" operatoru), şablonda adlandırılmış sabitlərdən istifadə edin. Dərslərdə “__match__()” metodundan istifadə edərək uyğun davranışı fərdiləşdirmək mümkündür.
dataclass import dataclass
@dataclass
sinif nöqtəsi:
x:int
y:int
def whereis(nöqtə):
uyğunluluq nöqtəsi:
Case Point(0, 0):
çap ("Mənşə")
Case Point(0, y):
çap(f"Y={y}")
Case Point(x, 0):
çap (f"X={x}")
case Point():
çap ("Başqa yerdə")
hal_:
çap ("Bir nöqtə deyil")
uyğunluluq nöqtəsi:
halda Nöqtə(x, y) əgər x == y:
çap (f"Y=X {x}")
Case Point(x, y):
çap(f"Diaqonalda deyil")
QIRMIZI, YAŞIL, MAVİ = 0, 1, 2
uyğun rəng:
halda .RED:
çap ("Qırmızı görürəm!")
halda .YAŞIL:
çap ("Ot yaşıldır")
halda .BLU
E:
çap ("Mən blues hiss edirəm :(")
Baxış üçün dəst hazırlanmışdır
Mənbə: opennet.ru