ಗೈಡೋ ವ್ಯಾನ್ ರೋಸಮ್ ಪ್ಯಾಟರ್ನ್ ಮ್ಯಾಚಿಂಗ್ ಆಪರೇಟರ್‌ಗಳನ್ನು ಪೈಥಾನ್‌ಗೆ ಸೇರಿಸಲು ಪ್ರಸ್ತಾಪಿಸಿದರು

ಗಿಡೋ ವ್ಯಾನ್ ರೋಸಮ್ ಪರಿಚಯಿಸಲಾಗಿದೆ ಸಮುದಾಯ ವಿಮರ್ಶೆಗಾಗಿ ಕರಡು ವಿಶೇಷಣಗಳು ಪೈಥಾನ್‌ನಲ್ಲಿ ಪ್ಯಾಟರ್ನ್ ಮ್ಯಾಚಿಂಗ್ ಆಪರೇಟರ್‌ಗಳನ್ನು (ಪಂದ್ಯ ಮತ್ತು ಪ್ರಕರಣ) ಅಳವಡಿಸಲು. ಪ್ಯಾಟರ್ನ್ ಮ್ಯಾಚಿಂಗ್ ಆಪರೇಟರ್‌ಗಳನ್ನು ಸೇರಿಸುವ ಪ್ರಸ್ತಾಪಗಳನ್ನು ಈಗಾಗಲೇ 2001 ಮತ್ತು 2006 ರಲ್ಲಿ ಪ್ರಕಟಿಸಲಾಗಿದೆ ಎಂದು ಗಮನಿಸಬೇಕು (pep-0275, pep-3103), ಆದರೆ ಹೊಂದಾಣಿಕೆಯ ಸರಪಳಿಗಳನ್ನು ಕಂಪೈಲ್ ಮಾಡಲು "if ... elif ... else" ರಚನೆಯನ್ನು ಉತ್ತಮಗೊಳಿಸುವ ಪರವಾಗಿ ತಿರಸ್ಕರಿಸಲಾಗಿದೆ.

ಹೊಸ ಅನುಷ್ಠಾನವು ಸ್ಕಾಲಾ, ರಸ್ಟ್ ಮತ್ತು ಎಫ್# ನಲ್ಲಿ ಒದಗಿಸಲಾದ "ಮ್ಯಾಚ್" ಆಪರೇಟರ್‌ನಂತೆಯೇ ಇರುತ್ತದೆ, ಇದು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಅಭಿವ್ಯಕ್ತಿಯ ಫಲಿತಾಂಶವನ್ನು "ಕೇಸ್" ಆಪರೇಟರ್‌ನ ಆಧಾರದ ಮೇಲೆ ಬ್ಲಾಕ್‌ಗಳಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡಲಾದ ಮಾದರಿಗಳ ಪಟ್ಟಿಯೊಂದಿಗೆ ಹೋಲಿಸುತ್ತದೆ. ಸಿ, ಜಾವಾ ಮತ್ತು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್‌ನಲ್ಲಿ ಲಭ್ಯವಿರುವ "ಸ್ವಿಚ್" ಆಪರೇಟರ್‌ಗಿಂತ ಭಿನ್ನವಾಗಿ, "ಮ್ಯಾಚ್"-ಆಧಾರಿತ ಅಭಿವ್ಯಕ್ತಿಗಳು ಹೆಚ್ಚಿನದನ್ನು ನೀಡುತ್ತವೆ ವ್ಯಾಪಕ ಕಾರ್ಯವನ್ನು. ಉದ್ದೇಶಿತ ಆಪರೇಟರ್‌ಗಳು ಕೋಡ್‌ನ ಓದುವಿಕೆಯನ್ನು ಸುಧಾರಿಸುತ್ತಾರೆ, ಅನಿಯಂತ್ರಿತ ಪೈಥಾನ್ ವಸ್ತುಗಳು ಮತ್ತು ಡೀಬಗ್ ಮಾಡುವಿಕೆಯ ಹೋಲಿಕೆಯನ್ನು ಸರಳಗೊಳಿಸುತ್ತಾರೆ ಮತ್ತು ವಿಸ್ತರಣೆಯ ಸಾಧ್ಯತೆಯಿಂದಾಗಿ ಕೋಡ್‌ನ ವಿಶ್ವಾಸಾರ್ಹತೆಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತಾರೆ ಎಂದು ಗಮನಿಸಲಾಗಿದೆ. ಸ್ಥಿರ ರೀತಿಯ ಪರಿಶೀಲನೆ.

ಡೆಫ್ http_error(ಸ್ಥಿತಿ):
ಹೊಂದಾಣಿಕೆಯ ಸ್ಥಿತಿ:
ಪ್ರಕರಣ 400:
"ಕೆಟ್ಟ ವಿನಂತಿ" ಹಿಂತಿರುಗಿ
ಪ್ರಕರಣ 401|403|404:
ಹಿಂತಿರುಗಿ "ಅನುಮತಿ ಇಲ್ಲ"
ಪ್ರಕರಣ 418:
ಹಿಂತಿರುಗಿ "ನಾನು ಟೀಪಾಟ್"
ಪ್ರಕರಣ_:
"ಬೇರೆ ಏನಾದರೂ" ಹಿಂತಿರುಗಿ

ಉದಾಹರಣೆಗೆ, ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಮೌಲ್ಯಗಳ ಆಧಾರದ ಮೇಲೆ ವೇರಿಯೇಬಲ್‌ಗಳನ್ನು ಬಂಧಿಸಲು ನೀವು ಆಬ್ಜೆಕ್ಟ್‌ಗಳು, ಟುಪಲ್‌ಗಳು, ಪಟ್ಟಿಗಳು ಮತ್ತು ಅನಿಯಂತ್ರಿತ ಅನುಕ್ರಮಗಳನ್ನು ಅನ್ಪ್ಯಾಕ್ ಮಾಡಬಹುದು. ನೆಸ್ಟೆಡ್ ಟೆಂಪ್ಲೇಟ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು, ಟೆಂಪ್ಲೇಟ್‌ನಲ್ಲಿ ಹೆಚ್ಚುವರಿ “if” ಷರತ್ತುಗಳನ್ನು ಬಳಸಲು, ಮುಖವಾಡಗಳನ್ನು (“[x, y, *rest]”), ಕೀ/ಮೌಲ್ಯ ಮ್ಯಾಪಿಂಗ್‌ಗಳನ್ನು (ಉದಾಹರಣೆಗೆ, {“bandwidth”: b, “lateency) ಬಳಸಲು ಅನುಮತಿಸಲಾಗಿದೆ ”: 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
ಹೊಂದಾಣಿಕೆಯ ಬಣ್ಣ:
ಪ್ರಕರಣ .RED:
ಮುದ್ರಿಸು ("ನಾನು ಕೆಂಪು ನೋಡುತ್ತೇನೆ!")
ಪ್ರಕರಣ .ಹಸಿರು:
ಮುದ್ರಣ ("ಹುಲ್ಲು ಹಸಿರು")
ಪ್ರಕರಣ .BLU
E:
ಪ್ರಿಂಟ್ ("ನಾನು ಬ್ಲೂಸ್ ಅನ್ನು ಅನುಭವಿಸುತ್ತಿದ್ದೇನೆ :(")

ಪರಿಶೀಲನೆಗಾಗಿ ಒಂದು ಸೆಟ್ ಅನ್ನು ಸಿದ್ಧಪಡಿಸಲಾಗಿದೆ ತೇಪೆಗಳು ಪ್ರಾಯೋಗಿಕ ಜೊತೆ ಅನುಷ್ಠಾನ ಪ್ರಸ್ತಾವಿತ ನಿರ್ದಿಷ್ಟತೆ, ಆದರೆ ಅಂತಿಮ ಆವೃತ್ತಿ ಇನ್ನೂ ಇದೆ ಚರ್ಚಿಸಲಾಗಿದೆ. ಉದಾಹರಣೆಗೆ ನೀಡಲಾಗುತ್ತದೆ ಡೀಫಾಲ್ಟ್ ಮೌಲ್ಯಕ್ಕಾಗಿ "case _:" ಅಭಿವ್ಯಕ್ತಿಯ ಬದಲಿಗೆ, "else:" ಅಥವಾ "default:" ಕೀವರ್ಡ್ ಅನ್ನು ಬಳಸಿ, ಏಕೆಂದರೆ ಇತರ ಸಂದರ್ಭಗಳಲ್ಲಿ "_" ಅನ್ನು ತಾತ್ಕಾಲಿಕ ವೇರಿಯಬಲ್ ಆಗಿ ಬಳಸಲಾಗುತ್ತದೆ. "if ... elif ... else" ರಚನೆಗಳಿಗೆ ಬಳಸಿದಂತೆಯೇ ಹೊಸ ಅಭಿವ್ಯಕ್ತಿಗಳನ್ನು ಬೈಟ್‌ಕೋಡ್‌ಗೆ ಭಾಷಾಂತರಿಸುವ ಆಧಾರದ ಮೇಲೆ ಆಂತರಿಕ ಸಂಸ್ಥೆಯು ಪ್ರಶ್ನಾರ್ಹವಾಗಿದೆ, ಇದು ತುಂಬಾ ದೊಡ್ಡ ಹೋಲಿಕೆಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವಾಗ ಅಪೇಕ್ಷಿತ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಒದಗಿಸುವುದಿಲ್ಲ.

ಮೂಲ: opennet.ru

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ