إنشاء Vector
جزء من قسم Logic & Flow في رحلة Rust على Coddy — الدرس 8 من 66.
الآن بعد أن فهمت ماهية المتجهات (vectors)، دعنا نتعلم كيفية إنشائها. توفر لغة Rust طريقتين أساسيتين لإنشاء متجه، كل منهما مناسبة لحالات مختلفة.
تستخدم الطريقة الأولى Vec::new() لإنشاء متجه (vector) فارغ يمكنك إضافة عناصر إليه لاحقاً:
let mut numbers = Vec::new();لاحظ أننا نستخدم mut لأننا سنرغب على الأرجح في إضافة عناصر إلى هذا المتجه (vector) الفارغ لاحقاً. لا تستطيع Rust دائماً تحديد نوع المتجه الفارغ، لذا قد تحتاج إلى تحديده بشكل صريح:
let mut numbers: Vec<i32> = Vec::new();تستخدم الطريقة الثانية ماكرو vec![] لإنشاء متجه (vector) بقيم أولية:
let numbers = vec![1, 2, 3, 4, 5];يعتبر الماكرو vec![] أكثر ملاءمة عندما تعرف القيم الأولية. يمكن لـ Rust تحديد النوع تلقائيًا من القيم التي تقدمها، لذا لا يلزم وجود تعليق توضيحي للنوع. يحتوي هذا المتجه (vector) على خمسة أعداد صحيحة وهو جاهز للاستخدام على الفور.
يدعم الماكرو vec![] أيضاً صيغة تكرار لإنشاء متجه (vector) مملوء بنفس القيمة لعدد محدد من المرات:
let zeros = vec![0; 5]; // [0, 0, 0, 0, 0]الصيغة هي vec![value; n]، حيث value هو العنصر المراد تكراره و n هو عدد مرات تكراره. هذا مفيد عندما تحتاج إلى متجه بحجم معروف مملوء مسبقاً بقيمة افتراضية.
كلا النهجين ينشئان نفس النوع من المتجهات - يعتمد الاختيار على ما إذا كان لديك قيم أولية أو تخطط لبناء المتجه تدريجياً.
التحدي
سهلستتلقى رقماً كمدخل يمثل عدد العناصر التي يجب أن يحتوي عليها المتجه (vector). اقرأ المدخلات، وقم بتحويلها إلى عدد صحيح، وأنشئ متجهاً بهذا العدد من العناصر، حيث يكون كل عنصر هو الرقم 10.
المتطلبات:
- اقرأ المدخلات وقم بتحويلها إلى عدد صحيح
- أنشئ متجهاً باستخدام الماكرو
vec![] - يجب أن يحتوي المتجه على العدد المحدد من العناصر
- يجب أن تكون قيمة كل عنصر
10 - اطبع كل عنصر في سطر منفصل
المدخلات: عدد صحيح واحد يمثل عدد العناصر
المخرجات: اطبع كل عنصر من عناصر المتجه في سطر منفصل
ورقة مرجعية
توفر لغة Rust طريقتين أساسيتين لإنشاء المتجهات (vectors):
استخدام Vec::new() لإنشاء متجه فارغ:
let mut numbers = Vec::new();استخدم mut عندما تخطط لإضافة عناصر لاحقاً. قد تحتاج إلى تحديد النوع بشكل صريح:
let mut numbers: Vec<i32> = Vec::new();استخدام ماكرو vec![] لإنشاء متجه بقيم أولية:
let numbers = vec![1, 2, 3, 4, 5];يقوم ماكرو vec![] بتحديد النوع تلقائياً بناءً على القيم المقدمة.
استخدام ماكرو vec![] لإنشاء متجه بقيمة متكررة:
let numbers = vec![0; 5]; // [0, 0, 0, 0, 0]تنشئ الصيغة vec![value; n] متجهاً يحتوي على value مكررة n من المرات.
جرّب بنفسك
use std::io;
fn main() {
// قراءة المدخلات
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed to read line");
let n: usize = input.trim().parse().expect("Invalid input");
// TODO: اكتب كودك أدناه
// إنشاء متجه يحتوي على n من العناصر، كل منها بقيمة 10
// طباعة كل عنصر في سطر منفصل
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس 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الشرائح كمعاملات للدوالشرائح أخرىمراجعة - إيجاد الكلمة الأولى