Rust

Rust — تطبیق (Match)

آخرین بروزرسانی: 1404/08/14

تطبیق (Match)

در راست، تطبیق (Match) برای انتخاب بین چند حالت است. وقتی گزینه ها زیادند، تطبیق در راست از چندین if..else خواناتر است؛ مثل منوی بازی که هر دکمه مرحله ای را باز می کند.

شروع سریع با match

با match یک مقدار را با شاخه ها مقایسه می کنیم. اولین شاخه مطابق اجرا می شود.

fn main() {
  let day = 4;
  match day {
    1 => println!("Monday"),
    2 => println!("Tuesday"),
    3 => println!("Wednesday"),
    4 => println!("Thursday"),
    5 => println!("Friday"),
    6 => println!("Saturday"),
    7 => println!("Sunday"),
    _ => println!("Invalid day."),
  }
}

مشاهده در ادیتور

نکته: زیرخط _ یعنی «هر چیز دیگر». مثل گزینه پیش فرض.

تطبیق چند مقداری

با | می توان چند مقدار را در یک شاخه جمع کرد. این یعنی «یا» منطقی.

fn main() {
  let day = 6;
  match day {
    1 | 2 | 3 | 4 | 5 => println!("Weekday"),
    6 | 7 => println!("Weekend"),
    _ => println!("Invalid day"),
  }
}

مشاهده در ادیتور

تطبیق که مقدار برمی گرداند

تطبیق در راست یک عبارت است. یعنی مقدار می دهد و می توانی ذخیره اش کنی.

fn main() {
  let day = 4;
  let result = match day {
    1 => "Monday",
    2 => "Tuesday",
    3 => "Wednesday",
    4 => "Thursday",
    5 => "Friday",
    6 => "Saturday",
    7 => "Sunday",
    _ => "Invalid day.",
  };
  println!("{}", result);
}

مشاهده در ادیتور

هشدار: همه شاخه ها باید هم نوع باشند؛ مثل همگی رشته.

گام های تمرین

  1. یک match برای ماه های 1 تا 12 بساز.
  2. روزهای کاری و تعطیل را با | گروه بندی کن.
  3. نتیجه match را در متغیر ذخیره و چاپ کن.

جمع بندی سریع

  • تطبیق در راست جایگزین if..else های طولانی است.
  • _ برای مقادیر دیگر است.
  • می توان مقدار از match گرفت.
  • نوع خروجی شاخه ها باید یکی باشد.

برای تکمیل مسیر: به اگر وگرنه (If..Else) برگرد و سپس حلقه ها در راست را بخوان. همچنین این صفحه تطبیق (Match) را ذخیره کن.