الانتقال إلى المحتوى الرئيسي
الوحدة 1 · الدرس 2 من 22/14 في الدورة~10 min
دروس الوحدة (2/2)

الأنواع البدائية

Rust هي لغة مكتوبة بشكل ثابت، مما يعني أنها يجب أن تعرف نوع جميع المتغيرات في وقت الترجمة. عادة، يمكن للمترجم استنتاج النوع بناءً على القيمة المخصصة، ولكن في بعض الأحيان يكون من الضروري أو المفيد تحديده يدويًا.

تنقسم الأنواع البدائية في Rust إلى فئتين رئيسيتين: الحجميات (قيمة واحدة) و المركبات (مجموعة من القيم).

أنواع العددية

تمثل الأنواع العددية قيمة واحدة. يحتوي الصدأ على أربعة أنواع عددية أساسية:

  1. الأعداد الصحيحة: الأعداد الصحيحة. يمكن توقيعها (i8، i16، i32، i64، i128، isize) أو غير موقعة (u8، u16، u32، u64، u128، usize). النوع الافتراضي هو i32.
  2. الفاصلة العائمة: الأرقام ذات النقاط العشرية. يمكن أن تكون f32 أو f64 (دقة مزدوجة، افتراضي).
  3. المنطقيات: قم بتمثيل الحقيقة المنطقية باستخدام true أو false (اكتب bool).
  4. الأحرف: قيمة عددية Unicode واحدة محاطة بعلامات اقتباس مفردة (النوع char)، على سبيل المثال، 'a'، أو 'ℤ'، أو الرموز التعبيرية '😻'.

مثال على التعليق التوضيحي للنوع الصريح:

Rust
let x: i64 = 42;
let y: f64 = 3.1415;
let is_rust_awesome: bool = true;
let heart_emoji: char = '❤';

أنواع المركبات

يمكن للأنواع المركبة تجميع قيم متعددة في نوع واحد. يحتوي الصدأ على نوعين رئيسيين من المركبات البدائية:

الصفوف

يقوم tuple بتجميع قيم من أنواع مختلفة في مجموعة ذات حجم ثابت:

Rust
let person: (String, i32) = (String::from("Alice"), 30);

// Destructuring to extract values
let (name, age) = person;

// Direct access with index using dot (.)
let name_direct = person.0;
let age_direct = person.1;

المصفوفات (قوائم ذات حجم ثابت)

يقوم المصفوفة بتجميع عناصر متعددة من نفس النوع في مجموعة ذات حجم ثابت مخزنة على المكدس:

Rust
let numbers = [1, 2, 3, 4, 5]; // Inferred as [i32; 5]
let first = numbers[0]; // Access by index
let third = numbers[2];

إذا حاولت الوصول إلى فهرس خارج حدود المصفوفة (على سبيل المثال، numbers[10])، فسوف يتعطل Rust على الفور (الذعر) في وقت التشغيل بدلاً من السماح بالوصول غير المصرح به إلى الذاكرة.

مقارنة

ميزةالصفوفصفيف
أنواع العناصريمكن أن تكون مختلفةيجب أن يكون هو نفسه
الحجمثابتثابت
الوصولفهرس عبر النقطة (على سبيل المثال، .0)أقواس مربعة (على سبيل المثال، [0])

جربه بنفسك

تمرين#rust.m1.l2.e1
المحاولات: 0جارٍ التحميل…

أعلن عن إحصائيات صفية مسماة تحتوي على العمر 30 (عدد صحيح) والنتيجة 95.5 (عائمة). بعد ذلك، قم بطباعة النتيجة على الشاشة عن طريق الوصول مباشرة إلى العنصر الثاني من الصف باستخدام الفهرس الخاص به.

جارٍ تحميل المحرر…
إظهار التلميح

قم بإنشاء الصف باستخدام `let stats = (30, 95.5);`. قم بالوصول إلى العنصر الثاني باستخدام `stats.1` داخل الماكرو `println!`.

الحل متاح بعد 3 من المحاولات

تمرين#rust.m1.l2.e2
المحاولات: 0جارٍ التحميل…

قم بتعريف مصفوفة مسماة بأرقام تحتوي على قيم الأعداد الصحيحة من 1 إلى 5. اطبع العنصر الثالث من المصفوفة (الفهرس 2) على الشاشة باستخدام println!.

جارٍ تحميل المحرر…
إظهار التلميح

قم بتعريف المصفوفة باستخدام `let number = [1, 2, 3, 4, 5];` والوصول إلى العنصر الثالث عن طريق فهرسته باستخدام `[2]`.

الحل متاح بعد 3 من المحاولات

تمرين#rust.m1.l2.e3
المحاولات: 0جارٍ التحميل…

بالنظر إلى الصف `let point = (10, 20);`، استخدم التدمير لاستخراج القيم إلى متغيرين باسم `x` و`y`. ثم اطبع مجموع `x` و`y`.

جارٍ تحميل المحرر…
إظهار التلميح

استخدم الصيغة `let (x, y) = point;` لتدمير الصف ثم جمع المتغيرات في `println!`.

الحل متاح بعد 3 من المحاولات