Skip to main content

የግጥሚያ መግለጫ

መግቢያ

match መግለጫ አንድ እሴት ከብዙ ቅጦች እና ቅርንጫፎች ጋር የሚያወዳድር የቁጥጥር መግለጫ ነው። ይህ ከif / else if ሰንሰለት ይልቅ የቅርንጫፉን ሃሳብ በግልፅ ለመግለፅ ይጠቅማል።

በአሁኑ ጊዜ፣ match የWave መግለጫ ነው፣ እና እንደ እሴት በቀጥታ የሚገመገም የገለጻ ቅፅ አይደገፍም። ማለትም እንደ var x = match (...) { ... } ያሉ ቅጾችን መጠቀም አይቻልም።


መሰረታዊ ሰዋሰው

match (value) {
pattern1 => {
// የማስፈጸሚያ እገዳ
}
pattern2 => {
// የማስፈጸሚያ እገዳ
}
_ => {
// ነባሪ እገዳ
}
}

የሰዋሰው ህጎች፡-

  • ራስጌው የmatch (expr) ቅርጸትን ይጠቀማል።
  • እያንዳንዱ ክንድ የpattern => { block } ቅርጸት ይጠቀማል።
  • የክንድ አካል { ... } ብሎክ መሆን አለበት።
  • በክንድ መካከል የመስመር መግቻዎችን ብቻ መጠቀም ይችላሉ ወይም , ወይም ; እንደ መለያየት መጠቀም ይችላሉ።

የስርዓተ-ጥለት ዓይነት

በአሁኑ ጊዜ ሶስት የሚደገፉ ቅጦች ከታች አሉ።

  1. ኢንቲጀር ቀጥተኛ ንድፍ
0 => { ... }
1 => { ... }
42 => { ... }
  1. መለያ ጥለት
Off => { ... }
On => { ... }

የመለየት ቅጦች ** እንደ ኢንቲጀር ቋሚዎች ሊተረጎሙ የሚችሉ እሴቶችን ይጠቀማሉ *** እንደ ኢነም ተለዋጮች።

  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. ስርዓተ-ጥለት ቋሚ መሆን አለበት
  • ለዪ ስርዓተ ጥለቶች፣ እንደ ኢንቲጀር ቋሚዎች/ኢነም ተለዋጮች ሊተረጎሙ የሚችሉ እሴቶችን ብቻ ይጠቀሙ።

ማጠቃለያ

match የWave የመግለጫ ቁጥጥር መግለጫ ለኢንቲጀር/ኢነም ቅርንጫፍነት የተመቻቸ ነው። የ=> + ብሎክ መዋቅርን ይጠቀማል እና ነባሪ ቅርንጫፎችን በዱር ካርዶች (_) ማዋቀር ይችላል።

የቅርንጫፍ ጉዳዮች ብዙ ሲሆኑ፣ ከ if / else if የበለጠ ለማንበብ ቀላል ነው እና ዓላማውን በግልፅ ያሳያል።