گائیڈو وین روسم
نیا نفاذ اسکالا، رسٹ، اور F# میں فراہم کردہ "میچ" آپریٹر کی طرح ہے، جو "کیس" آپریٹر کی بنیاد پر بلاکس میں درج نمونوں کی فہرست کے ساتھ مخصوص اظہار کے نتیجے کا موازنہ کرتا ہے۔ سی، جاوا، اور جاوا اسکرپٹ میں دستیاب "سوئچ" آپریٹر کے برعکس، "میچ" پر مبنی تاثرات بہت کچھ پیش کرتے ہیں۔
def http_error(status):
میچ کی حیثیت:
کیس 400:
واپس "خراب درخواست"
کیس 401|403|404:
واپسی "اجازت نہیں ہے"
کیس 418:
واپسی "میں ایک چائے والا ہوں"
معاملہ_:
"کچھ اور" واپس کریں
مثال کے طور پر، آپ موجودہ اقدار کی بنیاد پر متغیرات کو باندھنے کے لیے اشیاء، ٹیپلز، فہرستوں اور صوابدیدی ترتیب کو کھول سکتے ہیں۔ اسے نیسٹڈ ٹیمپلیٹس کی وضاحت کرنے، ٹیمپلیٹ میں اضافی "اگر" شرائط استعمال کرنے، ماسک استعمال کرنے کی اجازت ہے ("[x, y, *Rest]")، کلید/ویلیو میپنگ (مثال کے طور پر، {"bandwidth": b، "lateency ": l} "بینڈوڈتھ" اور "لیٹنسی" کی اقدار اور لغت نکالنے کے لیے، ذیلی ٹیمپلیٹس کو نکالیں (":=" آپریٹر)، ٹیمپلیٹ میں نامزد مستقل استعمال کریں۔ کلاسوں میں، "__match__()" طریقہ استعمال کرتے ہوئے مماثل رویے کو اپنی مرضی کے مطابق بنانا ممکن ہے۔
ڈیٹاکلاس سے ڈیٹاکلاس درآمد کریں۔
@dataclass
کلاس پوائنٹ:
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 at {x}")
کیس پوائنٹ (x، y):
پرنٹ (f"اختر پر نہیں")
سرخ، سبز، نیلا = 0، 1، 2
میچ رنگ:
کیس .RED:
پرنٹ ("میں سرخ دیکھ رہا ہوں!")
کیس .گرین:
پرنٹ ("گھاس سبز ہے")
کیس .BLU
E:
پرنٹ ("میں بلیوز محسوس کر رہا ہوں :(")
جائزہ کے لیے ایک سیٹ تیار کر لیا گیا ہے۔
ماخذ: opennet.ru