Guido van Rossum
Az új megvalósítás nagyon hasonlít a Scala, Rust és F# által biztosított "match" operátorhoz, amely egy meghatározott kifejezés eredményét hasonlítja össze a "case" operátor alapján blokkokban felsorolt minták listájával. A C, Java és JavaScript nyelvekben elérhető "switch" operátorral ellentétben a "match" alapú kifejezések sokkal többet kínálnak
def http_error(status):
mérkőzés állapota:
400 eset:
„Rossz kérés” visszaküldése
401|403|404 eset:
"Nem engedélyezett" visszaküldése
418 eset:
return "teáskanna vagyok"
ügy_:
visszaküldi a "valami mást"
Például kicsomagolhat objektumokat, sorokat, listákat és tetszőleges sorozatokat a változók meglévő értékek alapján történő összekapcsolásához. Megengedett beágyazott sablonok definiálása, további „if” feltételek használata a sablonban, maszkok („[x, y, *rest]”), kulcs/érték-leképezések (például {“sávszélesség”: b, „latency” ”: l} a "sávszélesség" és a "latencia" értékek és a szótár kinyeréséhez, alsablonok kibontásához (":=" operátor), nevesített konstansok használata a sablonban. Az osztályokban lehetőség van az illeszkedési viselkedés testreszabására a „__match__()” metódussal.
adatosztályokból importálja az adatosztályt
@adatosztály
osztály pont:
x:int
y:int
def whereis(pont):
meccspont:
esetpont(0, 0):
nyomtatás ("Eredet")
esetpont(0, y):
print(f"Y={y}")
esetpont(x, 0):
print(f"X={x}")
esetpont():
print ("Valahol máshol")
ügy_:
print ("Nem lényeg")
meccspont:
eset Pont(x, y), ha x == y:
print(f"Y=X at {x}")
eset Pont(x, y):
print(f"Nem az átlón")
PIROS, ZÖLD, KÉK = 0, 1, 2
egyezés színe:
tok .RED:
print ("Látok pirosat!")
tok .GREEN:
print ("A fű zöld")
tok .BLU
E:
print("Érzem a bluest :(")
Elkészült egy készlet felülvizsgálatra
Forrás: opennet.ru