Skip to main content

போட்டி அறிக்கை

அறிமுகம்

match அறிக்கை என்பது ஒரு மதிப்பை பல வடிவங்கள் மற்றும் கிளைகளுடன் ஒப்பிடும் கட்டுப்பாட்டு அறிக்கையாகும். if / else if சங்கிலியை விட கிளை நோக்கத்தை தெளிவாக வெளிப்படுத்த இது பயனுள்ளதாக இருக்கும்.

தற்போது, Wave இன் match என்பது அறிக்கை, மேலும் மதிப்பாக நேரடியாக மதிப்பிடப்படும் வெளிப்பாடு வடிவம் ஆதரிக்கப்படவில்லை. அதாவது, var x = match (...) { ... } போன்ற படிவங்களைப் பயன்படுத்த முடியாது.


அடிப்படை இலக்கணம்

match (value) {
pattern1 => {
// மரணதண்டனை தொகுதி
}
pattern2 => {
// மரணதண்டனை தொகுதி
}
_ => {
// இயல்புநிலை தொகுதி
}
}

இலக்கண விதிகள்:

  • தலைப்பு match (expr) வடிவமைப்பைப் பயன்படுத்துகிறது.
  • ஒவ்வொரு கையும் pattern => { block } வடிவமைப்பைப் பயன்படுத்துகிறது.
  • கை உடல் { ... } தொகுதியாக இருக்க வேண்டும்.
  • நீங்கள் கைகளுக்கு இடையில் வரி முறிவுகளைப் பயன்படுத்தலாம் அல்லது , அல்லது ; ஐ பிரிப்பானாகப் பயன்படுத்தலாம்.

மாதிரி வகை

கீழே தற்போது ஆதரிக்கப்படும் மூன்று வடிவங்கள் உள்ளன.

  1. முழு எண் எழுத்து வடிவ
0 => { ... }
1 => { ... }
42 => { ... }
  1. அடையாளங்காட்டி முறை
Off => { ... }
On => { ... }

அடையாளங்காட்டி வடிவங்கள் மதிப்புகளைப் பயன்படுத்துகின்றன, அவை முழு எண் மாறிலிகளாக விளங்குகின்றன enum மாறுபாடுகள் போன்றவை.

  1. வைல்டு கார்டு பேட்டர்ன் (_)
_ => { ... }

இது எந்த மாதிரியும் பொருந்தாத போது செயல்படுத்தப்படும் இயல்புநிலை கையாகும்.


பொருந்தக்கூடிய இலக்கு வகை

தற்போதைய அமலாக்கத்தின்படி, match இன் இலக்கு மதிப்பு ** முழு எண்/என்யூம் தொடராக இருக்க வேண்டும்**. சரங்கள், மிதக்கும் புள்ளி எண்கள், கட்டமைப்புகள் போன்றவற்றை match இலக்குகளாகப் பயன்படுத்த முடியாது.


எடுத்துக்காட்டு 1: முழு எண் கிளை

fun classify_num(v: i32) -> i32 {
var result: i32 = -1;

match (v) {
0 => {
result = 10;
}
1 => {
result = 20;
}
_ => {
result = 99;
}
}

return result;
}

எடுத்துக்காட்டு 2: enum கிளைகள்

enum Mode -> i32 {
Off = 0,
On = 1,
Unknown = 2
}

fun classify_mode(m: Mode) -> i32 {
match (m) {
Off => {
return 1;
}
On => {
return 2;
}
_ => {
return 3;
}
}
}

நடத்தை விதிகள்

  • switch குடும்பத்தைப் போலவே, ** பொருந்தக்கூடிய ஒரு கை மட்டுமே இயங்கும்**.
  • தானியங்கி வீழ்ச்சி இல்லை.
  • _ கையை அதிகபட்சம் ஒரு முறை பயன்படுத்தலாம்.
  • _ கை இல்லாமல் கூட, அது இலக்கணப்படி அனுமதிக்கப்படுகிறது. (பொருந்தக்கூடிய கை இல்லை என்றால், எந்த கையும் செயல்படுத்தப்படாது)

முன்னெச்சரிக்கைகள்

  1. நகல் வழக்குகள் இல்லை
  • அதே வழக்கின் நகல் அறிவிப்பானது தொகுத்தல் பிழையை ஏற்படுத்தும்.
  1. _ நகல் இல்லை
  • _ கையை ஒன்றுக்கு மேற்பட்ட முறை அறிவிக்க முடியாது.
  1. கை தொகுதி தேவை
  • => க்குப் பிறகு { ... } தொகுதியைப் பயன்படுத்த வேண்டும்.
  1. முறை நிலையானதாக இருக்க வேண்டும்
  • அடையாளங்காட்டி வடிவங்களுக்கு, முழு எண் மாறிலிகள்/enum மாறுபாடுகள் என விளக்கக்கூடிய மதிப்புகளை மட்டுமே பயன்படுத்தவும்.

சுருக்கம்

Wave இன் match என்பது முழு எண்/என்யூம் கிளைக்கு உகந்த ஒரு அறிக்கை கட்டுப்பாட்டு அறிக்கையாகும். இது => + தொகுதி கட்டமைப்பைப் பயன்படுத்துகிறது, மேலும் வைல்டு கார்டுகள் (_) வழியாக இயல்புநிலை கிளைகளை உள்ளமைக்க முடியும்.

அதிக கிளை வழக்குகள் உள்ளன, if / else if ஐ விட எளிதாக வாசிப்பது மற்றும் அதன் நோக்கத்தை அது தெளிவாக வெளிப்படுத்துகிறது.