Guido van Rossum විසින් Python වෙත රටා ගැළපෙන ක්‍රියාකරුවන් එක් කිරීමට යෝජනා කළේය

Guido van Rossum හඳුන්වා දී ඇත ප්‍රජා සමාලෝචනය සඳහා කෙටුම්පත පිරිවිතර Python හි රටා ගැලපෙන ක්‍රියාකරුවන් (ගැලපීම සහ නඩුව) ක්‍රියාත්මක කිරීම සඳහා. රටා ගැලපෙන ක්‍රියාකරුවන් එකතු කිරීමේ යෝජනා දැනටමත් 2001 සහ 2006 දී ප්‍රකාශයට පත් කර ඇති බව සැලකිල්ලට ගත යුතුය (pep-0275, pep-3103), නමුත් ගැළපෙන දාම සම්පාදනය කිරීම සඳහා “if ... elif ... else” ගොඩනැගීම ප්‍රශස්ත කිරීම සඳහා ප්‍රතික්ෂේප කරන ලදී.

නව ක්‍රියාත්මක කිරීම Scala, Rust, සහ F# හි සපයා ඇති "මැච්" ක්‍රියාකරුට සමාන වන අතර, එය නිශ්චිත ප්‍රකාශනයක ප්‍රතිඵලය "නඩු" ක්‍රියාකරු මත පදනම්ව කුට්ටිවල ලැයිස්තුගත කර ඇති රටා ලැයිස්තුවක් සමඟ සංසන්දනය කරයි. C, Java සහ JavaScript හි ඇති "ස්විච්" ක්‍රියාකරු මෙන් නොව, "ගැලපීම" මත පදනම් වූ ප්‍රකාශන බොහෝ දේ ලබා දෙයි පුළුල් ක්රියාකාරිත්වය. යෝජිත ක්‍රියාකරුවන් විසින් කේතයේ කියවීමේ හැකියාව වැඩි දියුණු කරන බවත්, අත්තනෝමතික පයිතන් වස්තු සංසන්දනය කිරීම සහ දෝෂහරණය කිරීම සරල කරන බවත්, දිගු කිරීමේ හැකියාවට ස්තූතිවන්ත වන පරිදි කේතයේ විශ්වසනීයත්වය වැඩි කරන බවත් සටහන් වේ. ස්ථිතික වර්ගය පරීක්ෂා කිරීම.

def http_error(තත්ත්වය):
ගැලපෙන තත්ත්වය:
නඩුව 400:
ආපසු "නරක ඉල්ලීම"
නඩුව 401|403|404:
ආපසු "අවසර නැත"
නඩුව 418:
ආපසු "මම තේ පෝච්චියක්"
නඩුව_:
"වෙනත් දෙයක්" ආපසු යන්න

උදාහරණයක් ලෙස, පවතින අගයන් මත පදනම්ව විචල්‍ය බැඳීමට ඔබට වස්තු, ටියුපල්, ලැයිස්තු සහ අත්තනෝමතික අනුපිළිවෙලවල් ඉවත් කළ හැකිය. එය කැදැලි සැකිලි නිර්වචනය කිරීමට, අච්චුවේ අමතර "if" කොන්දේසි භාවිතා කිරීමට, වෙස් මුහුණු භාවිතා කිරීමට ("[x, y, *rest]"), යතුරු/අගය සිතියම්ගත කිරීම් (උදාහරණයක් ලෙස, {"bandwidth": b, "latency ”: l} "කලාප පළල" සහ "ප්‍රමාද" අගයන් සහ ශබ්ද කෝෂය උපුටා ගැනීමට), උප සැකිලි උපුටා ගැනීම (":=" ක්‍රියාකරු), සැකිල්ලේ නම් කරන ලද නියතයන් භාවිතා කරන්න. පන්ති වලදී, “__match__()” ක්‍රමය භාවිතයෙන් ගැළපෙන හැසිරීම අභිරුචිකරණය කළ හැකිය.

dataclasses වලින් dataclass ආනයනය කරන්න

@dataclass
පන්ති ලක්ෂ්‍යය:
x:int
y:int

def whereis(point):
ගැලපුම් ලක්ෂ්‍යය:
සිද්ධි ලක්ෂ්‍යය(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:
මුද්‍රණය (“මට බ්ලූස් දැනෙනවා :(“)

සමාලෝචනය සඳහා කට්ටලයක් සකස් කර ඇත පැච් පර්යේෂණාත්මක සමග ක්‍රියාත්මක කිරීම යෝජිත පිරිවිතර, නමුත් අවසාන අනුවාදය තවමත් පවතී සාකච්ඡා කළා. උදාහරණයක් ලෙස ඉදිරිපත් කළා පෙරනිමි අගය සඳහා "case _:" ප්‍රකාශය වෙනුවට, "else:" හෝ "default:" යන මූල පදය භාවිතා කරන්න, මන්ද වෙනත් සන්දර්භවල "_" තාවකාලික විචල්‍යයක් ලෙස භාවිතා කරයි. ඉතා විශාල සැසඳීම් කට්ටල සැකසීමේදී අපේක්ෂිත කාර්ය සාධනය ලබා නොදෙන "if ... elif ... else" නිර්මිතයන් සඳහා භාවිතා කරන ආකාරයටම නව ප්‍රකාශන බයිට්කේතයට පරිවර්තනය කිරීම මත පදනම් වූ අභ්‍යන්තර සංවිධානය ද සැක සහිත ය.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න