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

إنشاء Vector

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

الآن بعد أن فهمت ما هي المتجهات (vectors)، دعنا نتعلم كيفية إنشائها. توفر لغة Rust طريقتين أساسيتين لإنشاء متجه، كل منهما مناسبة لمواقف مختلفة.

تستخدم الطريقة الأولى Vec::new() لإنشاء متجه (vector) فارغ يمكنك إضافة عناصر إليه لاحقاً:

let mut numbers = Vec::new();

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

let mut numbers: Vec<i32> = Vec::new();

تستخدم الطريقة الثانية ماكرو vec![] لإنشاء متجه (vector) بقيم أولية:

let numbers = vec![1, 2, 3, 4, 5];

يُعد الماكرو vec![] أكثر ملاءمة عندما تعرف القيم الأولية. يمكن لـ Rust تحديد النوع تلقائيًا من القيم التي تقدمها، لذا لا يلزم وجود تعليق توضيحي للنوع. يحتوي هذا المتجه على خمسة أعداد صحيحة وهو جاهز للاستخدام على الفور.

يدعم الماكرو vec![] أيضاً صيغة تكرار لإنشاء متجه (vector) مملوء بنفس القيمة. استخدم vec![value; n] لإنشاء متجه يحتوي على n من العناصر، كل منها مضبوط على value:

let zeros = vec![0; 5];   // [0, 0, 0, 0, 0]
let tens = vec![10; 3];   // [10, 10, 10]

هذا مفيد بشكل خاص عندما تريد إنشاء متجه (vector) بحجم معين يتم تحديده في وقت التشغيل، على سبيل المثال من مدخلات المستخدم:

let n = 4;
let data = vec![10; n];   // [10, 10, 10, 10]

تنشئ كلتا الطريقتين نفس النوع من المتجهات - ويعتمد الاختيار على ما إذا كان لديك قيم أولية أو تخطط لبناء المتجه تدريجياً.

challenge icon

التحدي

سهل

ستتلقى رقماً كمدخل يمثل عدد العناصر التي يجب أن يحتوي عليها المتجه (vector). اقرأ المدخل، وقم بتحويله إلى عدد صحيح، وأنشئ متجهاً بهذا العدد من العناصر، حيث يكون كل عنصر هو الرقم 10.

المتطلبات:

  • اقرأ المدخل وقم بتحويله إلى عدد صحيح
  • أنشئ متجهاً باستخدام الماكرو vec![]
  • يجب أن يحتوي المتجه على العدد المحدد من العناصر
  • يجب أن تكون قيمة كل عنصر 10
  • اطبع كل عنصر في سطر منفصل

المدخلات: عدد صحيح واحد يمثل عدد العناصر

المخرجات: اطبع كل عنصر من عناصر المتجه في سطر منفصل

جرّب بنفسك

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: اكتب كودك أدناه
    // أنشئ vector يحتوي على n من العناصر، قيمة كل منها 10
    
    
    // اطبع كل عنصر في سطر منفصل
    
}
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow