Гвидо ван Росум
Нова имплементација је веома слична оператору "подударања" који се налази у Сцала, Руст и Ф#, који пореди резултат наведеног израза са листом образаца наведених у блоковима на основу оператора "цасе". За разлику од оператора „свитцх“ доступног у Ц, Јава и ЈаваСцрипт-у, изрази засновани на „подударности“ нуде много више
деф хттп_еррор(статус):
статус утакмице:
случај 400:
врати "Лош захтев"
случај 401|403|404:
врати "Није дозвољено"
случај 418:
врати "ја сам чајник"
цасе_:
врати "Нешто друго"
На пример, можете распаковати објекте, тупле, листе и произвољне секвенце да бисте повезали променљиве на основу постојећих вредности. Дозвољено је дефинисати угнежђене шаблоне, користити додатне услове „ако“ у шаблону, користити маске („[к, и, *рест]“), мапирања кључ/вредност (на пример, {“пропусност“: б, „латенција ”: л} за издвајање вредности „пропусности” и „латенције” и речника), издвајање подшаблона (оператор „:="), коришћење именованих константи у шаблону. У класама је могуће прилагодити понашање подударања помоћу методе „__матцх__()“.
фром датацласс импорт датацласс
@датацласс
класа Тачка:
к:инт
и:инт
деф вхереис(тачка):
меч поен:
тачка случаја (0, 0):
принт("Порекло")
тачка случаја (0, и):
принт(ф"И={и}")
Тачка случаја (к, 0):
принт(ф"Кс={к}")
тачка случаја ():
принт("Негде другде")
цасе_:
принт("Није тачка")
меч поен:
случај Тачка(к, и) ако је к == и:
принт(ф"И=Кс у {к}")
Тачка случаја (к, и):
принт(ф"Не на дијагонали")
ЦРВЕНА, ЗЕЛЕНА, ПЛАВА = 0, 1, 2
одговара боју:
случај .РЕД:
принт("Видим црвено!")
случај .ЗЕЛЕНИ:
принт("Трава је зелена")
цасе .БЛУ
E:
принт(„Осећам блуз :(“)
Комплет је припремљен за преглед
Извор: опеннет.ру