గైడో వాన్ రోస్సమ్
కొత్త అమలు అనేది స్కాలా, రస్ట్ మరియు F#లో అందించబడిన "మ్యాచ్" ఆపరేటర్ లాగా ఉంటుంది, ఇది "కేస్" ఆపరేటర్ ఆధారంగా బ్లాక్లలో జాబితా చేయబడిన నమూనాల జాబితాతో పేర్కొన్న వ్యక్తీకరణ ఫలితాన్ని పోల్చి చూస్తుంది. C, Java మరియు JavaScriptలో అందుబాటులో ఉన్న "స్విచ్" ఆపరేటర్ వలె కాకుండా, "మ్యాచ్"-ఆధారిత వ్యక్తీకరణలు చాలా ఎక్కువ అందిస్తాయి
def http_error(status):
మ్యాచ్ స్థితి:
కేసు 400:
"చెడు అభ్యర్థన"ని తిరిగి ఇవ్వండి
కేసు 401|403|404:
తిరిగి "అనుమతించబడలేదు"
కేసు 418:
"నేను టీపాట్" అని తిరిగి వెళ్ళు
కేసు_:
"మరేదో" తిరిగి ఇవ్వు
ఉదాహరణకు, మీరు ఇప్పటికే ఉన్న విలువల ఆధారంగా వేరియబుల్లను బైండ్ చేయడానికి ఆబ్జెక్ట్లు, టుపుల్స్, లిస్ట్లు మరియు ఏకపక్ష సీక్వెన్స్లను అన్ప్యాక్ చేయవచ్చు. ఇది సమూహ టెంప్లేట్లను నిర్వచించడానికి, టెంప్లేట్లో అదనపు “if” షరతులను ఉపయోగించడానికి, ముసుగులు (“[x, y, *rest]”), కీ/విలువ మ్యాపింగ్లను (ఉదాహరణకు, {“బ్యాండ్విడ్త్”: b, “latency) ఉపయోగించడానికి అనుమతించబడుతుంది. ”: l} "బ్యాండ్విడ్త్" మరియు "లేటెన్సీ" విలువలు మరియు నిఘంటువును సంగ్రహించడానికి, ఉపటెంప్లేట్లను సంగ్రహించడానికి (":=" ఆపరేటర్), టెంప్లేట్లో పేరున్న స్థిరాంకాలను ఉపయోగించండి. తరగతులలో, “__match__()” పద్ధతిని ఉపయోగించి సరిపోలే ప్రవర్తనను అనుకూలీకరించడం సాధ్యమవుతుంది.
డేటాక్లాసెస్ నుండి డేటాక్లాస్ దిగుమతి
@డేటాక్లాస్
క్లాస్ పాయింట్:
x:int
y:int
def whereis(పాయింట్):
మ్యాచ్ పాయింట్:
కేస్ పాయింట్(0, 0):
ప్రింట్ ("మూలం")
కేస్ పాయింట్(0, y):
ప్రింట్(f"Y={y}")
కేస్ పాయింట్(x, 0):
ప్రింట్(f"X={x}")
కేస్ పాయింట్():
ప్రింట్ ("మరెక్కడో")
కేసు_:
ప్రింట్ ("పాయింట్ కాదు")
మ్యాచ్ పాయింట్:
x == y అయితే కేస్ పాయింట్(x, y):
ప్రింట్(f"Y=X {x}" వద్ద)
కేస్ పాయింట్(x, y):
ప్రింట్ (f"వికర్ణంలో లేదు")
ఎరుపు, ఆకుపచ్చ, నీలం = 0, 1, 2
మ్యాచ్ రంగు:
కేసు .RED:
ప్రింట్ ("నాకు ఎరుపు రంగు కనిపిస్తుంది!")
కేసు .GREEN:
ప్రింట్ ("గడ్డి ఆకుపచ్చగా ఉంటుంది")
కేసు .BLU
E:
ప్రింట్ (“నేను బ్లూస్ని అనుభవిస్తున్నాను :(“)
సమీక్ష కోసం ఒక సెట్ను సిద్ధం చేశారు
మూలం: opennet.ru