Guido van Rossum
Nouvo aplikasyon an sanble ak operatè "match" yo bay nan Scala, Rust, ak F#, ki konpare rezilta yon ekspresyon espesifye ak yon lis modèl ki nan lis nan blòk ki baze sou operatè "ka" la. Kontrèman ak operatè "switch" ki disponib nan C, Java, ak JavaScript, ekspresyon ki baze sou "matche" yo ofri plis ankò.
def http_error(estati):
sitiyasyon matche ak:
ka 400:
retounen "Move demann"
ka 401|403|404:
retounen "Pa pèmèt"
ka 418:
retounen "Mwen se yon teyèr"
ka_:
retounen "Yon lòt bagay"
Pou egzanp, ou ka depake objè, tuple, lis, ak sekans abitrè pou mare varyab ki baze sou valè ki egziste deja. Li pèmèt yo defini modèl imbrike, sèvi ak kondisyon adisyonèl "si" nan modèl la, itilize mask ("[x, y, *rès]"), kat kle/valè (pa egzanp, {"bandwidth": b, "latency ”: l} ekstrè valè "latè" ak "latansi" ak diksyonè), ekstrè submodèl (":=" operatè), sèvi ak konstan yo nonmen nan modèl. Nan klas yo, li posib pou pèsonalize konpòtman matche ak metòd "__match__()".
soti nan dataclasses enpòte dataclass
@dataclass
Pwen klas:
x:int
y:int
def whereis(pwen):
pwen match:
Pwen ka (0, 0):
enprime ("Orijin")
ka Pwen(0, y):
enprime(f"Y={y}")
ka Pwen (x, 0):
enprime(f"X={x}")
Pwen ka ():
enprime ("Yon lòt kote")
ka_:
enprime ("Pa yon pwen")
pwen match:
ka Pwen(x, y) si x == y:
enprime(f"Y=X nan {x}")
Pwen ka (x, y):
enprime(f"Pa sou dyagonal la")
WOUJ, VÈT, BLE = 0, 1, 2
matche ak koulè:
ka .RED:
enprime ("Mwen wè wouj!")
ka .GREEN:
enprime ("Zèb vèt")
ka .BLU
E:
print("Mwen santi blues yo :(")
Yo te prepare yon seri pou revizyon
Sous: opennet.ru