Guido van Rossum وړاندیز وکړ چې Python ته د نمونو میچینګ آپریټرونه اضافه کړي

Guido van Rossum معرفي شوی د ټولنې بیاکتنې لپاره مسوده مشخصات په Python کې د نمونې میچینګ آپریټرونو (میچ او قضیه) پلي کولو لپاره. دا باید په پام کې ونیول شي چې د نمونې سره سمون لرونکي آپریټرونو اضافه کولو وړاندیزونه دمخه په 2001 او 2006 کې خپاره شوي (pep-0275, pep-3103)، مګر د سمون زنځیرونو راټولولو لپاره د "if ... elif ... else" جوړونې د اصلاح کولو په حق کې رد شوي.

نوی تطبیق د "میچ" آپریټر په څیر دی چې په Scala، Rust، او F# کې چمتو شوي، کوم چې د "کیس" آپریټر پراساس په بلاکونو کې د لیست شوي نمونو لیست سره د ټاکل شوي بیان پایلې پرتله کوي. د "سوئچ" آپریټر په خلاف چې په C، Java، او JavaScript کې شتون لري، د "میچ" پر بنسټ بیانات ډیر څه وړاندیز کوي پراخه فعالیت. د یادونې وړ ده چې وړاندیز شوي آپریټرونه به د کوډ لوستلو وړتیا ته وده ورکړي، د خپل سري Python شیانو پرتله کول او ډیبګ کول ساده کړي، او د غزیدو احتمال له امله د کوډ اعتبار هم زیات کړي. جامد ډول چک کول.

def http_error(status):
د میچ حالت:
قضیه 400:
بیرته راستنیدنه "خراب غوښتنه"
قضیه 401|403|404:
بیرته راستنیدنه "اجازه نه ده"
قضیه 418:
بیرته راشئ "زه د چای کڅوړه یم"
قضیه_:
بیرته "یو څه"

د مثال په توګه، تاسو کولی شئ د موجودو ارزښتونو پراساس متغیرات تړلو لپاره توکي، ټپلونه، لیستونه، او خپلمنځي ترتیبونه خلاص کړئ. دا اجازه لري چې د ځړول شوي ټیمپلیټونه تعریف کړي، په ټیمپلیټ کې اضافي "که" شرایط وکاروئ، ماسکونه وکاروئ ("[x، y، * آرام]")، د کلیدي/ ارزښت نقشه (د مثال په توګه، {"بینډ ویت": b، "تخریب ": l} د "بنډ ویت" او "لطابق" ارزښتونو او لغتونو ایستلو لپاره ، فرعي ټیمپلیټونه استخراج کړئ (": =" آپریټر) ، په ټیمپلیټ کې نومول شوي مستقلونه وکاروئ. په ټولګیو کې، دا ممکنه ده چې د "__match__()" میتود په کارولو سره د سمون چلند دودیز کړئ.

د ډیټا کلاسونو څخه ډیټا کلاس وارد کړئ

@dataclass
د ټولګي نقطه:
x:int
y:int

def چیرته دی (نښه):
د میچ نقطه:
د قضیې نقطه (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:
چاپ ("زه د بلوز احساس کوم :(")

یو سیټ د بیاکتنې لپاره چمتو شوی دی پیچونه د تجربوي سره تطبیق وړاندیز شوی توضیحات، مګر وروستۍ نسخه لاهم ده بحث شوی. د مثال په توګه وړاندیز شوی د ډیفالټ ارزښت لپاره د بیان "کیس _:" پرځای ، د "بل:" یا "ډیفالټ:" کلیمه وکاروئ ، ځکه چې "_" په نورو شرایطو کې د لنډمهاله تغیر په توګه کارول کیږي. همدارنګه د پوښتنې وړ داخلي سازمان دی، کوم چې د "که ... ایلیف ... نور" ساختمانونو لپاره کارول شوي ورته ورته بایټ کوډ ته د نوي بیانونو ژباړلو پراساس دی، کوم چې د پرتله کولو خورا لوی سیټونو پروسس کولو په وخت کې مطلوب فعالیت نه وړاندې کوي.

سرچینه: opennet.ru

Add a comment