Guido van Rossum
Inplementazio berria Scala, Rust eta F#-n emandako "match" operadorearen antzekoa da, zeinak zehaztutako adierazpen baten emaitza blokeetan zerrendatutako ereduen zerrenda batekin alderatzen baitu "kasu" eragilean oinarrituta. C, Java eta JavaScript-en eskuragarri dagoen "switch" operadoreak ez bezala, "match" oinarritutako esamoldeek askoz gehiago eskaintzen dute
def http_error(egoera):
Partiduen egoera:
400 kasua:
itzuli "Eskaera txarra"
401|403|404 kasua:
itzuli "Ez dago onartzen"
418 kasua:
itzuli "teontzi bat naiz"
kasua_:
itzuli "Beste zerbait"
Esate baterako, objektuak, tuplak, zerrendak eta sekuentzia arbitrarioak deskonprimi ditzakezu aldagaiak dauden balioetan oinarrituta lotzeko. Txantiloi habiaratuak definitzea, txantiloian "baldin" baldintza osagarriak erabiltzea, maskarak erabiltzea ("[x, y, *atseden]"), gako/balioen mapak (adibidez, {"bandwidth": b, "latency") ”: l} "banda-zabalera" eta "latentzia" balioak eta hiztegia ateratzeko), azpitxantiloiak atera (":=" operadorea), erabili izendun konstanteak txantiloian. Klaseetan, posible da bat etortzeko portaera pertsonalizatzea “__match__()” metodoa erabiliz.
from dataclasses inportatu dataclass
@dataclass
class Puntua:
x:int
y:int
def whereis(puntua):
partida puntua:
kasu Puntua (0, 0):
inprimatu ("Jatorria")
kasua Puntua(0, y):
inprimatu(f"Y={y}")
kasu Puntua (x, 0):
inprimatu(f"X={x}")
kasu Puntua():
inprimatu ("Beste nonbait")
kasua_:
inprimatu ("Ez da puntu bat")
partida puntua:
kasua Puntua (x, y) x == y bada:
inprimatu(f"Y=X at {x}")
kasua Puntua (x, y):
inprimatu(f"Ez diagonalean")
GORRIA, BERDEA, URDINA = 0, 1, 2
lotu kolorea:
kasua .GORRIA:
inprimatu ("gorria ikusten dut!")
kasua .BERDEA:
print("Belarra berdea da")
kasua .BLU
E:
inprimatu(“Burdina sentitzen dut :(“)
Sorta bat prestatu da berrikusteko
Iturria: opennet.ru