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

الوصول إلى عناصر الـ Vector

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

بمجرد أن يكون لديك متجه (vector) يحتوي على عناصر، ستحتاج إلى الوصول إلى القيم الفردية. توفر لغة Rust طريقتين مختلفتين للحصول على العناصر من المتجه، لكل منهما مفاضلاتها الخاصة بين السهولة والأمان.

تستخدم الطريقة الأولى صيغة الفهرسة باستخدام الأقواس المربعة، بشكل مشابه للمصفوفات:

let numbers = vec![10, 20, 30, 40];
let first = numbers[0]; // يحصل على 10
let third = numbers[2]; // يحصل على 30

بينما يعد هذا النحو مألوفاً ومختصراً، إلا أنه ينطوي على مخاطرة كبيرة: إذا حاولت الوصول إلى فهرس غير موجود، فسوف يتوقف برنامجك بشكل مفاجئ (panic) وينهار:

let numbers = vec![10, 20, 30];
let invalid = numbers[5]; // سيؤدي هذا إلى توقف مفاجئ (panic)!

تستخدم الطريقة الثانية التابع .get()، والذي يوفر وصولاً آمناً:

let numbers = vec![10, 20, 30, 40];
let first = numbers.get(0); // تعيد Some(10)
let invalid = numbers.get(5); // تعيد None

تُرجع الطريقة .get() النوع Option - إما Some(value) إذا كان الفهرس موجوداً، أو None إذا لم يكن موجوداً. هذا يجبرك على التعامل مع احتمالية عدم وجود العنصر، مما يمنع الانهيارات ويجعل الكود الخاص بك أكثر قوة.

challenge icon

التحدي

سهل

اكتب دالة get_element_at تأخذ متجهًا numbers وفهرسًا idx، وتعيد العنصر الموجود في ذلك الفهرس باستخدام الوصول الآمن.

استخدم الطريقة .get() للوصول إلى العنصر بأمان. إذا كان الفهرس موجودًا، فقم بإرجاع القيمة. إذا لم يكن الفهرس موجودًا، فقم بإرجاع -1 كقيمة افتراضية.

المعاملات:

  • numbers (Vec<i32>): المتجه المراد الوصول إليه
  • idx (i32): الفهرس المراد استرجاعه

المخرجات: العنصر الموجود في الفهرس المعطى، أو -1 إذا لم يكن الفهرس موجودًا (i32)

ورقة مرجعية

توفر لغة Rust طريقتين للوصول إلى عناصر المتجه (vector):

صيغة الفهرس (Index syntax) باستخدام الأقواس المربعة:

let numbers = vec![10, 20, 30, 40];
let first = numbers[0]; // يحصل على 10
let third = numbers[2]; // يحصل على 30

ستتسبب هذه الطريقة في حدوث panic إذا كان الفهرس غير موجود:

let invalid = numbers[5]; // سيحدث panic هنا!

طريقة .get() للوصول الآمن:

let numbers = vec![10, 20, 30, 40];
let first = numbers.get(0); // تعيد Some(10)
let invalid = numbers.get(5); // تعيد None

تعيد طريقة .get() نوع Option - إما Some(value) إذا كان الفهرس موجوداً، أو None إذا لم يكن موجوداً. هذا يمنع الانهيارات ويتطلب معالجة صريحة للعناصر المفقودة.

جرّب بنفسك

fn get_element_at(numbers: Vec<i32>, idx: i32) -> i32 {
    // اكتب الكود هنا
}
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow