கைடோ வான் ரோஸம் பைத்தானில் பேட்டர்ன் மேட்ச் ஆபரேட்டர்களைச் சேர்க்க முன்மொழிந்தார்

கைடோ வான் ரோஸம் சமர்ப்பிக்க சமூக மதிப்பாய்வுக்கான வரைவு விவரக்குறிப்புகள் பைத்தானில் பேட்டர்ன் மேட்ச் ஆபரேட்டர்களை (மேட்ச் மற்றும் கேஸ்) செயல்படுத்துவதற்கு. பேட்டர்ன் மேட்ச் ஆபரேட்டர்களைச் சேர்ப்பதற்கான முன்மொழிவுகள் ஏற்கனவே 2001 மற்றும் 2006 இல் வெளியிடப்பட்டுள்ளன என்பதைக் கவனத்தில் கொள்ள வேண்டும் (pep-0275, pep-3103), ஆனால் பொருந்தும் சங்கிலிகளை தொகுக்க "if ... elif ... else" கட்டமைப்பை மேம்படுத்துவதற்கு ஆதரவாக நிராகரிக்கப்பட்டது.

புதிய செயலாக்கமானது ஸ்கலா, ரஸ்ட் மற்றும் எஃப்# இல் வழங்கப்பட்ட "மேட்ச்" ஆபரேட்டரைப் போன்றது, இது ஒரு குறிப்பிட்ட வெளிப்பாட்டின் முடிவை "கேஸ்" ஆபரேட்டரின் அடிப்படையில் பிளாக்குகளில் பட்டியலிடப்பட்ட வடிவங்களின் பட்டியலுடன் ஒப்பிடுகிறது. C, Java மற்றும் JavaScript இல் கிடைக்கும் "சுவிட்ச்" ஆபரேட்டர் போலல்லாமல், "மேட்ச்" அடிப்படையிலான வெளிப்பாடுகள் பலவற்றை வழங்குகின்றன. பரந்த செயல்பாடு. முன்மொழியப்பட்ட ஆபரேட்டர்கள் குறியீட்டின் வாசிப்புத்திறனை மேம்படுத்துவார்கள், தன்னிச்சையான பைதான் பொருள்களின் ஒப்பீடு மற்றும் பிழைத்திருத்தத்தை எளிதாக்குவார்கள், மேலும் நீட்டிக்கப்பட்ட சாத்தியம் காரணமாக குறியீட்டின் நம்பகத்தன்மையை அதிகரிக்கும் என்பது குறிப்பிடத்தக்கது. நிலையான வகை சரிபார்ப்பு.

def http_error(status):
போட்டி நிலை:
வழக்கு 400:
"மோசமான கோரிக்கை" திரும்பவும்
வழக்கு 401|403|404:
திரும்ப "அனுமதிக்கப்படவில்லை"
வழக்கு 418:
திரும்பவும் "நான் ஒரு தேநீர் தொட்டி"
வழக்கு_:
திரும்ப "வேறு ஏதாவது"

எடுத்துக்காட்டாக, ஏற்கனவே உள்ள மதிப்புகளின் அடிப்படையில் மாறிகளை பிணைக்க நீங்கள் பொருள்கள், டூப்பிள்கள், பட்டியல்கள் மற்றும் தன்னிச்சையான வரிசைகளைத் திறக்கலாம். உள்ளமைக்கப்பட்ட டெம்ப்ளேட்களை வரையறுக்கவும், டெம்ப்ளேட்டில் கூடுதல் “if” நிபந்தனைகளைப் பயன்படுத்தவும், முகமூடிகளைப் பயன்படுத்தவும் (“[x, y, *rest]”), விசை/மதிப்பு மேப்பிங்ஸ் (எடுத்துக்காட்டாக, {“bandwidth”: b, “latency ”: l} "அலைவரிசை" மற்றும் "லேட்டன்சி" மதிப்புகள் மற்றும் அகராதியைப் பிரித்தெடுக்க, துணை டெம்ப்ளேட்களைப் பிரித்தெடுக்கவும் (":=" ஆபரேட்டர்), டெம்ப்ளேட்டில் பெயரிடப்பட்ட மாறிலிகளைப் பயன்படுத்தவும். வகுப்புகளில், "__match__()" முறையைப் பயன்படுத்தி பொருந்தக்கூடிய நடத்தையைத் தனிப்பயனாக்க முடியும்.

தரவு வகுப்புகளிலிருந்து தரவு வகுப்பை இறக்குமதி செய்கிறது

@டேட்டாகிளாஸ்
வகுப்பு புள்ளி:
x:int
y:int

எங்கே (புள்ளி):
போட்டி புள்ளி:
வழக்குப் புள்ளி(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
பொருந்தும் வண்ணம்:
வழக்கு .ரெட்:
அச்சு ("நான் சிவப்பு பார்க்கிறேன்!")
வழக்கு .பச்சை:
அச்சு ("புல் பச்சை")
வழக்கு .BLU
E:
அச்சு (“நான் ப்ளூஸை உணர்கிறேன் :(“)

பரிசீலனைக்கு ஒரு தொகுப்பு தயார் செய்யப்பட்டுள்ளது திட்டுகள் பரிசோதனையுடன் செயல்படுத்தல் முன்மொழியப்பட்ட விவரக்குறிப்பு, ஆனால் இறுதி பதிப்பு இன்னும் உள்ளது விவாதிக்கப்பட்டது. உதாரணமாக வழங்கப்படும் இயல்புநிலை மதிப்புக்கு "case _:" என்ற வெளிப்பாட்டிற்குப் பதிலாக, "else:" அல்லது "default:" என்ற முக்கிய சொல்லைப் பயன்படுத்தவும், ஏனெனில் மற்ற சூழல்களில் "_" ஒரு தற்காலிக மாறியாகப் பயன்படுத்தப்படுகிறது. "if ... elif ... else" கன்ஸ்ட்ரக்ட்களுக்குப் பயன்படுத்தப்படும் பைட்கோடில் புதிய வெளிப்பாடுகளை மொழிபெயர்ப்பதை அடிப்படையாகக் கொண்ட உள் அமைப்பும் கேள்விக்குரியது, இது மிகப் பெரிய அளவிலான ஒப்பீடுகளைச் செயலாக்கும்போது விரும்பிய செயல்திறனை வழங்காது.

ஆதாரம்: opennet.ru

கருத்தைச் சேர்