الفهرسة والتكرار
يمكنك الوصول إلى العناصر والتكرار عليها
الفهرسة والتكرار درس مجاني في Learn Rust Coding على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn Rust Coding، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn Rust Coding 4 دروس في المجموع.
القراءة حسب الفهرس
لكل عنصر في المتجه موضع رقمي يُسمى الفهرس. تبدأ الفهارس من 0، لذلك يكون فهرس العنصر الأول هو 0.
اقرأ عنصرًا باستخدام الأقواس المربعة، مثل v[0] لقراءة القيمة الأولى.
fn main() {
let v = vec![100, 200, 300];
println!("first = {}", v[0]);
println!("third = {}", v[2]);
}أخطاء تجاوز الحدود
تؤدي محاولة الوصول إلى فهرس يتجاوز نهاية المتجه إلى حدوث panic وإيقاف البرنامج. في متجه طوله 3، الفهارس الصحيحة الوحيدة هي 0 و1 و2.
ستؤدي مطالبة البرنامج بالقيمة v[5] هنا إلى تعطله، لذا احرص دائمًا على أن يكون الفهرس ضمن النطاق.
الوصول الآمن باستخدام get
تُرجع الطريقة get قيمة من النوع Option بدلًا من التسبب في panic. تحصل على Some(value) إذا كان الفهرس موجودًا، أو None إذا كان خارج النطاق.
يتيح لك ذلك التعامل مع العنصر المفقود بطريقة سليمة.
fn main() {
let v = vec![1, 2, 3];
match v.get(5) {
Some(x) => println!("got {}", x),
None => println!("no such index"),
}
}عدد العناصر
تعطيك الطريقة len عدد العناصر. ويكون آخر فهرس صحيح دائمًا هو len - 1.
تساعدك معرفة الطول على التكرار بأمان أو التحقق من الحدود قبل استخدام الفهرس.
fn main() {
let v = vec![5, 6, 7, 8];
println!("length = {}", v.len());
println!("last = {}", v[v.len() - 1]);
}التكرار على القيم
أنظف طريقة للوصول إلى كل عنصر هي استخدام حلقة for على مرجع إلى المتجه. يؤدي استخدام &v إلى استعارة المتجه، بحيث يظل قابلًا للاستخدام بعد ذلك.
في كل دورة، يربط البرنامج n بمرجع إلى أحد العناصر.
fn main() {
let v = vec![2, 4, 6];
for n in &v {
println!("value: {}", n);
}
}التكرار باستخدام الفهرس
عندما تحتاج إلى الموضع أيضًا، استدعِ iter().enumerate(). فهي تُنتج زوجًا من (index, value) في كل خطوة.
وهذا مثالي للإخراج المرقم أو للقواعد التي تعتمد على الموضع.
fn main() {
let v = vec!["a", "b", "c"];
for (i, item) in v.iter().enumerate() {
println!("{}: {}", i, item);
}
}تغيير كل عنصر
لتعديل القيم في مواضعها، كرر على &mut v، ويجب أن يكون المتجه mut. كل قيمة n هي مرجع قابل للتعديل، لذلك تلغي الإشارة المرجعية عنها باستخدام * لإسناد قيمة جديدة.
يتضاعف كل عنصر هنا.
fn main() {
let mut v = vec![1, 2, 3];
for n in &mut v {
*n *= 2;
}
println!("{:?}", v);
}جمع عناصر المتجه
تجعل أدوات التكرار العمليات الحسابية سهلة. تضيف الطريقة iter().sum() جميع العناصر معًا.
يحتاج Rust إلى معرفة نوع الناتج، لذلك نحدد نوع المجموع على أنه i32.
fn main() {
let v = vec![10, 20, 30];
let total: i32 = v.iter().sum();
println!("sum = {}", total);
}العنصر الأول والأخير
تُرجع الطريقتان first() وlast() مراجع من النوع Option إلى طرفي المتجه. وتُرجعان None عندما يكون المتجه فارغًا.
يؤدي استخدامهما إلى تجنب الحساب اليدوي للفهرس وأخطاء الوصول خارج النطاق.
fn main() {
let v = vec![7, 8, 9];
println!("{:?}", v.first());
println!("{:?}", v.last());
}البحث باستخدام contains
للتحقق من وجود قيمة، استخدم contains. فهي تستقبل مرجعًا إلى القيمة وتُرجع قيمة من النوع bool.
تفحص هذه الطريقة المتجه، وتوفر وسيلة سريعة للتحقق من العضوية.
fn main() {
let v = vec![3, 6, 9];
println!("has 6? {}", v.contains(&6));
println!("has 5? {}", v.contains(&5));
}اقتطاع نطاق
يستعير المقطع جزءًا من المتجه باستخدام نطاق، مثل &v[1..3]. تكون نقطة البداية مشمولة، بينما تكون نقطة النهاية مستبعدة.
تتيح لك المقاطع العمل مع نافذة من العناصر من دون نسخها.
fn main() {
let v = vec![10, 20, 30, 40];
let middle = &v[1..3];
println!("{:?}", middle);
}تحقق سريع
اختبر مدى فهمك للفهرسة والتكرار.
مراجعة
قرأت العناصر حسب الفهرس، ووصلت إليها بأمان باستخدام get، وكررت عليها باستخدام for وenumerate و&mut.
كما استخدمت sum وfirst وlast وcontains والمقاطع. ستتعلم بعد ذلك تكبير المتجهات وتصغيرها.
الأسئلة الشائعة
هل درس «الفهرسة والتكرار» مجاني؟
نعم — نص درس «الفهرسة والتكرار» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn Rust Coding، انتقل إلى CoddyKit PRO. تتضمن دورة Learn Rust Coding 4 دروس في المجموع.
ماذا ستتعلم في «الفهرسة والتكرار»؟
يمكنك الوصول إلى العناصر والتكرار عليها تتمرن على Learn Rust Coding مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Learn Rust Coding؟
لا تُشترط خبرة سابقة. Learn Rust Coding على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «الفهرسة والتكرار»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Learn Rust Coding هذا؟
نعم. كل درس في Learn Rust Coding يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إنشاء المتجهات وملؤها
- الفهرسة والتكرار
- التوسيع والتقليص
- متجهات من Structs