Menu
CoddyTech

تعبير 'match'

جزء من قسم المنطق وتدفّق التنفيذ في رحلة Rust على Coddy. الدرس 1 من 66.

تعبير match هو أداة قوية لمطابقة الأنماط في Rust، تتيح لك مقارنة قيمة بأنماط مختلفة وتنفيذ التعليمات البرمجية بناءً على النمط المطابق. فكّر فيه على أنه إصدار أكثر تطورًا من عبارات if، ويمكنه التعامل مع شروط متعددة بأناقة.

إليك الصياغة الأساسية لتعبير match:

match value {
    pattern1 => code_to_run,
    pattern2 => code_to_run,
    _ => default_code,
}

يُسمّى كل سطر داخل match «ذراعًا». يفصل => النمط عن الشيفرة التي تُنفَّذ عندما يطابق ذلك النمط. الشرطة السفلية _ هي نمط شامل خاص يطابق أي شيء، فهي أشبه بنمط «يلتقط الكل» لأي قيمة لا تطابق الأنماط الأخرى.

إليك مثالًا بسيطًا يتحقق من رقم:

let number = 2;

match number {
    1 => println!("One"),
    2 => println!("Two"),
    _ => println!("Other"),
}

في Rust، يجب أن تكون تعبيرات match شاملة، أي يجب أن تتعامل مع كل قيمة ممكنة. لهذا السبب يُعدّ رمز البدل _ مهمًا جدًا؛ فهو يضمن أنك غطّيت جميع الحالات التي لم تُطابق صراحةً.

match تعبير، لذا يمكنه أيضًا إنتاج قيمة. عندما يكون آخر تعبير في دالة، تكون قيمة الذراع المطابقة هي ما تُعيده الدالة:

fn day_name(day: i32) -> String {
    match day {
        1 => String::from("Monday"),
        2 => String::from("Tuesday"),
        _ => String::from("Another day"),
    }
}

بما أن هذه الدالة تُعيد قيمة من النوع String، فإن كل ذراع يحوّل نصه (من النوع &str) إلى String باستخدام String::from أو .to_string().

challenge icon

التحدي

سهل

اكتب دالة describe_number تأخذ num وتعيد وصفاً نصياً بناءً على قيمة الرقم.

استخدم تعبير match لإعادة أوصاف مختلفة لأرقام مختلفة.

الشروط:

  • إذا كان num هو 0، فقم بإعادة "zero"
  • إذا كان num هو 1، فقم بإعادة "one"
  • إذا كان num هو 2، فقم بإعادة "two"
  • إذا كان num هو 3، فقم بإعادة "three"
  • لأي رقم آخر، قم بإعادة "many"

المعاملات:

  • num (i32): الرقم المراد وصفه

القيمة المرجعة: وصف نصي للرقم (String)

جرّب بنفسك

fn describe_number(num: i32) -> String {
    // اكتب الشيفرة هنا
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفّق التنفيذ

تدرّب بنفسك: مترجم Rust عبر الإنترنت