Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

جملة Match

جزء من قسم Fundamentals في رحلة Rust على Coddy — الدرس 26 من 75.

يتيح لك تعبير المطابقة (match expression) مقارنة قيمة بمجموعة من الأنماط وتنفيذ الكود بناءً على النمط الذي يتطابق معها.

إليك الهيكل الأساسي لتعبير match:

match variable {
	pattern1 => expression1,
	pattern2 => expression2,
	// ... المزيد من الأنماط
	_ => default_expression,
}

الكلمة المفتاحية match يتبعها القيمة التي تريد اختبارها.

يتكون كل ذراع من أذرع المطابقة من نمط يتبعه => والكود المراد تنفيذه.

الشرطة السفلية _ هي الحالة الافتراضية التي تطابق أي شيء لم تطابقه الأنماط الأخرى.

إليك مثالاً:

let day = 3;
let day_name = match day {
	1 => "Monday",
	2 => "Tuesday",
	3 => "Wednesday",
	// ... المزيد من الأنماط،
	_ => "Invalid day",
};

بالنسبة لأسطر التعليمات البرمجية المتعددة في ذراع (arm)، استخدم كتلة (block):

let day = 3;
let day_name = match day {
	1 => {
		println!("First day of the week!");
		"Monday"
	},
	2 => "Tuesday",
	// ... حالات أخرى
	_ => "Invalid day",
};

يمكنك مطابقة أنماط متعددة باستخدام |:

let day = 3;
let day_type = match day {
	1 | 2 | 3 | 4 | 5 => "Weekday",
	6 | 7 => "Weekend",
	_ => "Invalid day",
};

تعبيرات Match في لغة Rust يجب أن تكون شاملة، مما يعني أنها يجب أن تغطي جميع القيم الممكنة. سيقوم المترجم (compiler) بالتحقق من ذلك من أجلك.

challenge icon

التحدي

مبتدئ

أنشئ برنامجًا يأخذ رقم الشهر (1 لشهر يناير، 2 لشهر فبراير، إلخ) ويطبع الفصل الذي ينتمي إليه. استخدم عبارة match للمنطق البرمجي.

الفصول والشهور المقابلة لها هي:

  • Winter: ديسمبر (12)، يناير (1)، فبراير (2)
  • Spring: مارس (3)، أبريل (4)، مايو (5)
  • Summer: يونيو (6)، يوليو (7)، أغسطس (8)
  • Autumn: سبتمبر (9)، أكتوبر (10)، نوفمبر (11)

ورقة مرجعية

يقارن تعبير match قيمة مقابل أنماط وينفذ الكود بناءً على النمط الذي يتطابق:

match variable {
    pattern1 => expression1,
    pattern2 => expression2,
    _ => default_expression,
}

مثال أساسي:

let day = 3;
let day_name = match day {
    1 => "Monday",
    2 => "Tuesday",
    3 => "Wednesday",
    _ => "Invalid day",
};

بالنسبة لأسطر الكود المتعددة في ذراع (arm)، استخدم كتلة (block):

let day = 3;
let day_name = match day {
    1 => {
        println!("First day of the week!");
        "Monday"
    },
    2 => "Tuesday",
    _ => "Invalid day",
};

طابق أنماطاً متعددة باستخدام |:

let day = 3;
let day_type = match day {
    1 | 2 | 3 | 4 | 5 => "Weekday",
    6 | 7 => "Weekend",
    _ => "Invalid day",
};

يجب أن تكون تعبيرات Match شاملة - يجب أن تغطي جميع القيم الممكنة. الشرطة السفلية _ هي الحالة الافتراضية التي تطابق أي شيء لم تطابقه الأنماط الأخرى.

جرّب بنفسك

use std::io;

fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input).unwrap();
    let month: i32 = input.trim().parse().unwrap();
    // اكتب الكود الخاص بك أدناه
    let season = 

    // لا تقم بتغيير السطر أدناه
    println!("status = {}", season);
}
quiz iconاختبر نفسك

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

جميع دروس Fundamentals