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

مطابقة النطاقات

جزء من قسم Logic & Flow في رحلة Rust على Coddy — الدرس 3 من 66.

عندما تحتاج إلى التحقق مما إذا كانت القيمة تقع ضمن نطاق معين من الأرقام، فإن كتابة أفرع منفصلة لكل قيمة فردية سيكون أمراً مملاً. يدعم تعبير match في لغة Rust أنماط النطاق التي تتيح لك المطابقة مع امتداد مستمر من القيم باستخدام صيغة start..=end.

يقوم العامل ..= بإنشاء نطاق شامل، مما يعني تضمين كل من قيمتي البداية والنهاية في المطابقة. إليك كيفية استخدام النطاقات في أذرع المطابقة (match arms):

let temp = 22;

match temp {
    ..=0 => println!("Freezing"),
    1..=15 => println!("Cold"),
    _ => println!("Warm"),
}

في هذا المثال، لن تتطابق درجة الحرارة 22 مع النطاقين الأولين، لذا ستنتقل إلى ذراع الرمز العام (wildcard arm) وتطبع "Warm". يتضمن النطاق 1..=15 كلاً من 1 و15، لذا فإن أي درجة حرارة من 1 إلى 15 ستطبع "Cold".

challenge icon

التحدي

سهل

ستتلقى عمراً كمدخل. اقرأ المدخلات، وقم بتحويلها إلى عدد صحيح، واستخدم تعبير match مع أنماط النطاق لطباعة فئة العمر المناسبة.

المتطلبات:

  • إذا كان العمر 0..=12، اطبع "Child"
  • إذا كان العمر 13..=19، اطبع "Teenager"
  • إذا كان العمر 20..=64، اطبع "Adult"
  • إذا كان العمر 65..=120، اطبع "Senior"
  • لأي عمر آخر، اطبع "Invalid age"

المدخلات: عدد صحيح واحد يمثل العمر

المخرجات: اطبع فئة العمر: "Child"، أو "Teenager"، أو "Adult"، أو "Senior"، أو "Invalid age"

جرّب بنفسك

use std::io;

fn main() {
    // قراءة المدخلات
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let age: i32 = input.trim().parse().expect("Please enter a valid number");
    
    // TODO: اكتب كودك أدناه باستخدام تعبير `match` مع أنماط النطاق (range patterns)
    
    // طباعة النتيجة
}
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow