0Pricing
Learn Rust Coding · درس

التكرار على المجموعات

for والمكررات

التكرار على المجموعات درس مجاني في Learn Rust Coding على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn Rust Coding، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn Rust Coding 4 دروس في المجموع.

التكرار باستخدام for

حلقة for هي أبسط طريقة لزيارة كل عنصر في مجموعة.

fn main() {
    let nums = vec![1, 2, 3];
    for n in &nums {
        println!("{}", n);
    }
}

التكرار على النطاقات

تنتج النطاقات سلسلة يمكنك التكرار عليها. النطاق 1..5 لا يشمل النهاية، بينما 1..=5 يشملها.

fn main() {
    for i in 1..=3 {
        println!("i = {}", i);
    }
}

الطريقة iter

يؤدي استدعاء .iter() إلى إنشاء مكرّر ينتج مراجع لكل عنصر. وتظل المكررات خاملة إلى أن تُستهلك.

fn main() {
    let v = vec![10, 20, 30];
    let mut it = v.iter();
    println!("{:?}", it.next());
    println!("{:?}", it.next());
}

ثلاث طرق للتكرار

توفر المتجهات ثلاثة أساليب للتكرار:

  • iter() — ينتج &T (استعارة).
  • iter_mut() — ينتج &mut T (استعارة قابلة للتعديل).
  • into_iter() — ينتج T (ينقل الملكية).
fn main() {
    let v = vec![1, 2, 3];
    for x in v.into_iter() {
        println!("owned {}", x);
    }
}

التحويل باستخدام map

تطبّق map إغلاقًا على كل عنصر، فتنتج مكرّرًا جديدًا. استخدم collect لجمع النتائج.

fn main() {
    let v = vec![1, 2, 3];
    let squared: Vec<i32> = v.iter().map(|x| x * x).collect();
    println!("{:?}", squared);
}

الاختيار باستخدام filter

تُبقي filter على العناصر التي يعيد الإغلاق القيمة true لها فقط.

fn main() {
    let v = vec![1, 2, 3, 4, 5];
    let odds: Vec<i32> = v.into_iter().filter(|x| x % 2 == 1).collect();
    println!("{:?}", odds);
}

التجميع باستخدام sum وcount

تختزل طرق الاستهلاك المكرّر إلى قيمة واحدة، مثل sum وcount وmax وmin.

fn main() {
    let v = vec![4, 8, 15, 16];
    let total: i32 = v.iter().sum();
    let how_many = v.iter().count();
    println!("sum {} count {}", total, how_many);
}

تسلسل المحوّلات

يمكن تسلسل طرق المكررات في مسار واضح. تحوّل كل خطوة الدفق قبل المستهلك النهائي.

fn main() {
    let v = vec![1, 2, 3, 4, 5, 6];
    let result: i32 = v.iter()
        .filter(|x| *x % 2 == 0)
        .map(|x| x * 10)
        .sum();
    println!("{}", result);
}

enumerate للفهرسة

تقرن enumerate كل عنصر بفهرسه، فتنتج صفوفًا بالشكل (index, value).

fn main() {
    let letters = vec!['a', 'b', 'c'];
    for (i, ch) in letters.iter().enumerate() {
        println!("{}: {}", i, ch);
    }
}

التكرار على HashMap

تعمل المكررات مع الخرائط أيضًا. وينتج عن التكرار صفوف من المفتاح والقيمة.

use std::collections::HashMap;

fn main() {
    let mut m = HashMap::new();
    m.insert("a", 1);
    m.insert("b", 2);
    for (k, v) in &m {
        println!("{} -> {}", k, v);
    }
}

for مقابل طرق المكررات

تُعد حلقة for العادية مناسبة للتأثيرات الجانبية مثل الطباعة. أما محوّلات المكررات (map وfilter وsum) فتتألق عند تحويل البيانات إلى قيمة جديدة.

fn main() {
    let v = vec![2, 4, 6];
    let doubled: Vec<i32> = v.iter().map(|x| x * 2).collect();
    for x in &doubled {
        println!("{}", x);
    }
}

تحقق سريع

تذكّر دور محوّلات المكررات.

مراجعة

التكرار على المجموعات في Rust:

  • استخدم for x in &collection للحلقات البسيطة.
  • تتحكم iter وiter_mut وinto_iter في الاستعارة.
  • المحوّلات: map وfilter وenumerate.
  • المستهلكات: collect وsum وcount وmax.
fn main() {
    let prices = vec![10, 25, 40];
    let with_tax: Vec<i32> = prices.iter().map(|p| p + p / 5).collect();
    let total: i32 = with_tax.iter().sum();
    println!("{:?} total {}", with_tax, total);
}

الأسئلة الشائعة

هل درس «التكرار على المجموعات» مجاني؟

نعم — نص درس «التكرار على المجموعات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn Rust Coding، انتقل إلى CoddyKit PRO. تتضمن دورة Learn Rust Coding 4 دروس في المجموع.

ماذا ستتعلم في «التكرار على المجموعات»؟

for والمكررات تتمرن على Learn Rust Coding مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn Rust Coding؟

لا تُشترط خبرة سابقة. Learn Rust Coding على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «التكرار على المجموعات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn Rust Coding هذا؟

نعم. كل درس في Learn Rust Coding يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. Vectors
  2. Strings و&str
  3. HashMaps
  4. التكرار على المجموعات
← العودة إلى Learn Rust Coding