ম্যাচ স্টেটমেন্ট
পরিচিতি
match স্টেটমেন্ট হল একটি নিয়ন্ত্রণ বাক্য যা একক মূল্যকে বিভিন্ন প্যাটার্নের সাথে তুলনা করে শাখায় বিভক্ত করে।
if / else if চেইনের থেকে শাখা উদ্দেশ্য আরও স্পষ্টভাবে জানানোর সময় এটি কার্যকর।
বর্তমানে Wave এর match একটি statement(বাক্য), এবং এটি সরাসরি মূল্যায়নপুযোগ্য দ্বারা সমর্থিত নয়।
অর্থাৎ, var x = match (...) { ... } এর মতো ফর্মগুলি ব্যবহারযোগ্য নয়।
প্রাথমিক ব্যাকরণ
match (value) {
pattern1 => {
// মৃত্যুদন্ড ব্লক
}
pattern2 => {
// মৃত্যুদন্ড ব্লক
}
_ => {
// ডিফল্ট ব্লক
}
}
ব্যাক রণ নিয়ম:
- শিরোনাম
match (expr)ফর্মটি ব্যবহার করে। - প্রতি বাহুতে
{ ... }ফর্মটি ব্যবহার করা হয়। - বাহু কন্টেন্ট অবশ্য
{ ... }ব্লক হতে হবে। - বাহু মধ্যে কেবল নিউ লাইনের প্রয়োজন এবং পৃথককারী হিসেবে
,অথবা;ব্যবহার করা যায়।
প্যাটার্নের প্রকারভেদ
বর্তমানে সমর্থনকৃত প্যাটার্নগুলি নিম্নলিখিত ৩ প্রকারের।
- ইন্টিজার লিটারাল প্যাটার্ন
0 => { ... }
1 => { ... }
42 => { ... }
- সনাক্তকারী প্যাটার্ন
Off => { ... }
On => { ... }
সনাক্তকারী প্যাটার্ন টির জন্য enum variant এর মতো ব্যবহার হয়, যা হল ইন্টিজার কনস্ট্যান্ট হিসেবে ব্যাখ্যা করা যায়।
- ওয়াইল্ডকার্ড প্যাটার্ন (
_)।
_ => { ... }
যখন কোন প্যাটার্ন মেলেনি তখন চালিত মূল বাহু।
ম্যাচিং টার্গেট টাইপ
বর্তমান বাস্তবায়ন অনুযায়ী match এর লক্ষ্য মান ইনটিজার সিরিজ/এনাম সিরিজ হওয়া উচিত।
স্ট্রিং, ফ্লোটিং-পয়েন্ট, ও স্ট্রাকচার ইত্যাদি match এর লক্ষ্য হিসেবে ব্যবহার করা যাবে না।
উদাহরণ ১: ইন্টিজার বিভাজন
fun classify_num(v: i32) -> i32 {
var result: i32 = -1;
match (v) {
0 => {
result = 10;
}
1 => {
result = 20;
}
_ => {
result = 99;
}
}
return result;
}
উদা হরণ ২: এনাম বিভাজন
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সিরিজের মতো অনুরূপভাবে যেকোনো একটি মিলিত হাতই শুধুমাত্র কার্যকরী হবে।
