Guido van Rossum
Nýja útfærslan er mjög lík "samsvörun" rekstraraðilanum sem gefin er upp í Scala, Rust og F#, sem ber saman niðurstöðu tiltekinnar tjáningar við lista yfir mynstur sem skráð eru í kubbum byggt á "case" rekstraraðilanum. Ólíkt „switch“ stjórnandanum sem er fáanlegur í C, Java og JavaScript, bjóða „samsvörun“ byggðar tjáningar miklu meira
def http_error (staða):
staða leiks:
mál 400:
skila "Slæm beiðni"
mál 401|403|404:
skila "Ekki leyft"
mál 418:
skila "Ég er tepotti"
Málið_:
skila "Eitthvað annað"
Til dæmis geturðu pakkað niður hlutum, túllum, listum og handahófskenndum röðum til að binda breytur byggðar á gildandi gildum. Það er leyfilegt að skilgreina hreiður sniðmát, nota viðbótar „ef“ skilyrði í sniðmátinu, nota grímur („[x, y, *rest]“), lykla-/gildavörp (til dæmis {“bandwidth”: b, „latency“ ”: l} til að draga út „bandbreidd“ og „leynd“ gildi og orðabók), draga út undirsniðmát (":=" rekstraraðila), notaðu nafngreinda fasta í sniðmátinu. Í flokkum er hægt að sérsníða samsvörunarhegðun með því að nota „__match__()“ aðferðina.
frá gagnaflokkum flytja inn gagnaflokk
@gagnaflokkur
flokkspunktur:
x: int
y:int
def whereis (punktur):
mótspunktur:
Case Point(0, 0):
print ("Uppruni")
tilvikspunktur (0, y):
print(f"Y={y}")
tilvikspunktur(x, 0):
print(f"X={x}")
Case Point():
print("Einhvers staðar annars staðar")
Málið_:
print("Ekki punktur")
mótspunktur:
fallpunktur(x, y) ef x == y:
print(f"Y=X at {x}")
tilvikspunktur (x, y):
print(f"Ekki á ská")
RAUTT, GRÆNT, BLÁR = 0, 1, 2
passa lit:
hulstur .RED:
print("Ég sé rautt!")
tilfelli .GRÆN:
print("Gras er grænt")
tilfelli .BLU
E:
print(“Ég er að fíla blúsinn :(“)
Sett hefur verið útbúið til endurskoðunar
Heimild: opennet.ru