Guido van Rossum
အကောင်အထည်ဖော်မှုအသစ်သည် Scala၊ Rust နှင့် F# တွင် ပေးထားသည့် "match" အော်ပရေတာနှင့် တူသည်၊ ၎င်းသည် သတ်မှတ်ထားသော စကားရပ်တစ်ခု၏ ရလဒ်ကို "case" အော်ပရေတာပေါ်တွင် အခြေခံထားသော လုပ်ကွက်များတွင် ဖော်ပြထားသော ပုံစံများစာရင်းနှင့် နှိုင်းယှဉ်ပါသည်။ C၊ Java၊ နှင့် JavaScript တို့တွင် ရရှိနိုင်သော "switch" အော်ပရေတာများနှင့် မတူဘဲ၊ "match"-based expressions များက ပိုမိုပေးဆောင်သည်
def http_error(အခြေအနေ)-
ကိုက်ညီမှုအခြေအနေ
အမှု 400:
"မကောင်းတဲ့ တောင်းဆိုချက်" ကို ပြန်ပေးပါ
အမှုတွဲ 401|403|404-
"ခွင့်မပြုဘူး"
အမှု 418:
"ငါက လက်ဖက်ရည်ခွက်ပါ"
case_:
"အခြားတစ်ခုခု" ပြန်လာပါ
ဥပမာအားဖြင့်၊ သင်သည် ရှိပြီးသားတန်ဖိုးများကို အခြေခံ၍ ကိန်းရှင်များကို ချည်နှောင်ရန်အတွက် အရာဝတ္ထုများ၊ tuples၊ lists နှင့် မထင်သလို sequenceများကို ထုပ်ပိုးနိုင်ပါသည်။ ၎င်းအား ပေါင်းစပ်ထားသော နမူနာပုံစံများကို သတ်မှတ်ရန်၊ နမူနာတွင် နောက်ထပ် “if” အခြေအနေများကို အသုံးပြုရန်၊ မျက်နှာဖုံးများ (“[x, y, *rest]”), သော့/တန်ဖိုးများကို ပုံဖော်ခြင်း (ဥပမာ၊ {“bandwidth”: b, “latency ”:l} မှ "bandwidth" နှင့် "latency" တန်ဖိုးများနှင့် အဘိဓာန်များကို ထုတ်ယူရန်၊ ထုတ်ယူထားသော ပုံစံခွဲများ (":=" operator)၊ template တွင် အမည်ရှိသော ကိန်းသေများကို အသုံးပြုပါ။ အတန်းများတွင်၊ "__match__()" နည်းလမ်းကို အသုံးပြု၍ ကိုက်ညီသောအပြုအမူကို စိတ်ကြိုက်ပြင်ဆင်နိုင်သည်။
dataclasses မှ dataclass ကိုတင်သွင်းပါ။
@dataclass
အတန်းအမှတ်-
x:int
y:int
def whereis(အမှတ်):
ပွဲစဉ်အမှတ်-
အမှုအမှတ်(0, 0):
print("မူရင်း")
အမှုအမှတ်(0၊ y):
print(f"Y={y}")
အမှုအမှတ်(x၊ 0)။
print(f"X={x}")
အမှုအမှတ်():
print("အခြားတစ်နေရာ")
case_:
print("အမှတ်မဟုတ်")
ပွဲစဉ်အမှတ်-
case Point(x၊ y) if x == y:
print(f"Y=Xမှာ {x}")
ဖြစ်ရပ်အမှတ်(x၊ y):
print(f"ထောင့်ဖြတ်ပေါ်တွင်မဟုတ်ပါ")
အနီရောင်၊ အစိမ်း၊ အပြာ = 0၊ 1၊ 2
ကိုက်ညီသောအရောင်
ဖြစ်ရပ်မှန် .RED:
print("အနီရောင်မြင်ရတယ်!")
ကိစ္စ။GREEN:
ပုံနှိပ်ခြင်း ("မြက်စိမ်းသည်")
case .BLU
E:
print(“ကျွန်တော် ပြာတွေ ခံစားရတယ် :(“)
အတွဲတစ်ခုကို ပြန်လည်သုံးသပ်ရန် ပြင်ဆင်ထားပါသည်။
source: opennet.ru