ما هو الـ Vector؟
جزء من قسم Logic & Flow في رحلة Rust على Coddy — الدرس 7 من 66.
في لغة Rust، لديك طريقتان رئيسيتان لتخزين مجموعات من البيانات: المصفوفات (arrays) والمتجهات (vectors). بينما تمتلك المصفوفات حجماً ثابتاً يجب أن يكون معروفاً في وقت التصريف (compile time)، فإن المتجهات هي مجموعات ديناميكية يمكن أن تنمو وتتقلص أثناء تنفيذ البرنامج.
المتجه (vector)، الذي يُكتب كـ Vec<T>، هو نوع المصفوفة القابلة للتوسيع في لغة Rust. يمثل T نوع العناصر التي سيحتويها المتجه - على سبيل المثال، Vec<i32> للأعداد الصحيحة أو Vec<String> للسلاسل النصية. على عكس المصفوفات (arrays) حيث يجب عليك تحديد عدد العناصر بدقة مسبقاً، يمكن أن تبدأ المتجهات فارغة ويتم إضافة العناصر إليها أو إزالتها منها أثناء تشغيل البرنامج.
إليك متى تختار المتجه (vector) بدلاً من المصفوفة (array):
// Array - حجم ثابت، معروف في وقت التصريف
let scores = [85, 92, 78, 90]; // دائماً 4 عناصر بالضبط
// Vector - حجم ديناميكي، يمكن أن يتغير أثناء وقت التشغيل
let mut grades = Vec::new(); // يبدأ فارغاً، ويمكن أن ينموتعد المتجهات (Vectors) مثالية عندما لا تعرف عدد العناصر التي ستحتاجها مسبقاً، مثل تخزين مدخلات المستخدم، أو قراءة البيانات من الملفات، أو بناء قوائم تتغير بناءً على منطق البرنامج. فهي توفر المرونة التي لا تستطيع المصفوفات (arrays) تقديمها مع الحفاظ على وصول فعال إلى العناصر.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
ورقة مرجعية
المتجهات (Vec<T>) هي مجموعات ديناميكية يمكن أن تنمو وتتقلص أثناء تنفيذ البرنامج، على عكس المصفوفات التي لها حجم ثابت معروف في وقت التصريف.
يمثل T نوع العناصر التي سيحتويها المتجه:
Vec<i32> // متجه من الأعداد الصحيحة
Vec<String> // متجه من النصوصإنشاء متجه:
let mut grades = Vec::new(); // يبدأ فارغاً، ويمكن أن ينمومقارنة مع المصفوفات:
// مصفوفة - حجم ثابت
let scores = [85, 92, 78, 90]; // دائماً 4 عناصر بالضبط
// متجه - حجم ديناميكي
let mut grades = Vec::new(); // يمكن أن يتغير أثناء وقت التشغيلاستخدم المتجهات عندما لا تعرف عدد العناصر التي ستحتاجها مسبقاً، مثل تخزين مدخلات المستخدم، أو قراءة البيانات من الملفات، أو بناء قوائم تتغير بناءً على منطق البرنامج.
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1تدفق التحكم المتقدم
تعبير 'match'مطابقة قيم متعددةمطابقة النطاقاتتعبير 'if let'الحلقات التكرارية كتعبيراتمراجعة - محلل أوامر بسيط4تجميع البيانات باستخدام Structs
ما هو الـ Struct؟نظرة عامة على الـ Structsالوصول إلى حقول الـ Structالـ Structs القابلة للتعديلالـ Structs كمعاملات للدوالالـ Tuple Structsمراجعة - إنشاء Book Struct7معالجة الأخطاء باستخدام 'Result'
ما هو 'Result'؟استخدام 'match' مع 'Result'is_ok() و is_err()اختصارات: unwrap و expectعامل علامة الاستفهام '?'تحويل السلاسل النصية إلى أرقامملخص - دالة القسمة الآمنة10الـ Closures والدوال المجهولة
ما هو الـ Closure؟تعريف Closure بسيطالـ Closures مع المعاملاتالتقاط البيئة المحيطةملخص - Closure الجامع البسيط2مقدمة في الـ Vectors
ما هو الـ Vector؟إنشاء Vectorإضافة عناصر باستخدام pushالوصول إلى عناصر الـ Vectorالتكرار عبر الـ Vectorالتكرار القابل للتعديل (Mutable Iteration)إزالة العناصرمراجعة - متتبع نقاط بسيط5أزواج (المفتاح والقيمة) مع Hash Maps
ما هو Hash Map؟إنشاء Hash Mapإدراج أزواج (المفتاح والقيمة)الوصول إلى القيمالتكرار عبر Hash Mapتحديث قيمةإزالة زوجملخص - عداد الكلمات6التعامل مع غياب القيم باستخدام 'Option'
ما هو الـ 'Option'؟استخدام 'match' مع 'Option''is_some()' و 'is_none()'فك تغليف الـ 'Option'الدالة 'expect'توفير قيمة افتراضية: 'unwrap_or'مراجعة - البحث عن عنصر9شرائح الـ String والمزيد
String مقابل &strإنشاء شرائح الـ Stringالشرائح كمعاملات للدوالشرائح أخرىمراجعة - إيجاد الكلمة الأولى