دروس الوحدة (2/2)
الأنواع البدائية
Rust هي لغة مكتوبة بشكل ثابت، مما يعني أنها يجب أن تعرف نوع جميع المتغيرات في وقت الترجمة. عادة، يمكن للمترجم استنتاج النوع بناءً على القيمة المخصصة، ولكن في بعض الأحيان يكون من الضروري أو المفيد تحديده يدويًا.
تنقسم الأنواع البدائية في Rust إلى فئتين رئيسيتين: الحجميات (قيمة واحدة) و المركبات (مجموعة من القيم).
أنواع العددية
تمثل الأنواع العددية قيمة واحدة. يحتوي الصدأ على أربعة أنواع عددية أساسية:
- الأعداد الصحيحة: الأعداد الصحيحة. يمكن توقيعها (
i8،i16،i32،i64،i128،isize) أو غير موقعة (u8،u16،u32،u64،u128،usize). النوع الافتراضي هوi32. - الفاصلة العائمة: الأرقام ذات النقاط العشرية. يمكن أن تكون
f32أوf64(دقة مزدوجة، افتراضي). - المنطقيات: قم بتمثيل الحقيقة المنطقية باستخدام
trueأوfalse(اكتبbool). - الأحرف: قيمة عددية Unicode واحدة محاطة بعلامات اقتباس مفردة (النوع
char)، على سبيل المثال،'a'، أو'ℤ'، أو الرموز التعبيرية'😻'.
مثال على التعليق التوضيحي للنوع الصريح:
let x: i64 = 42;
let y: f64 = 3.1415;
let is_rust_awesome: bool = true;
let heart_emoji: char = '❤';أنواع المركبات
يمكن للأنواع المركبة تجميع قيم متعددة في نوع واحد. يحتوي الصدأ على نوعين رئيسيين من المركبات البدائية:
الصفوف
يقوم tuple بتجميع قيم من أنواع مختلفة في مجموعة ذات حجم ثابت:
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;المصفوفات (قوائم ذات حجم ثابت)
يقوم المصفوفة بتجميع عناصر متعددة من نفس النوع في مجموعة ذات حجم ثابت مخزنة على المكدس:
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]) |
جربه بنفسك
أعلن عن إحصائيات صفية مسماة تحتوي على العمر 30 (عدد صحيح) والنتيجة 95.5 (عائمة). بعد ذلك، قم بطباعة النتيجة على الشاشة عن طريق الوصول مباشرة إلى العنصر الثاني من الصف باستخدام الفهرس الخاص به.
إظهار التلميح
قم بإنشاء الصف باستخدام `let stats = (30, 95.5);`. قم بالوصول إلى العنصر الثاني باستخدام `stats.1` داخل الماكرو `println!`.
الحل متاح بعد 3 من المحاولات
قم بتعريف مصفوفة مسماة بأرقام تحتوي على قيم الأعداد الصحيحة من 1 إلى 5. اطبع العنصر الثالث من المصفوفة (الفهرس 2) على الشاشة باستخدام println!.
إظهار التلميح
قم بتعريف المصفوفة باستخدام `let number = [1, 2, 3, 4, 5];` والوصول إلى العنصر الثالث عن طريق فهرسته باستخدام `[2]`.
الحل متاح بعد 3 من المحاولات
بالنظر إلى الصف `let point = (10, 20);`، استخدم التدمير لاستخراج القيم إلى متغيرين باسم `x` و`y`. ثم اطبع مجموع `x` و`y`.
إظهار التلميح
استخدم الصيغة `let (x, y) = point;` لتدمير الصف ثم جمع المتغيرات في `println!`.
الحل متاح بعد 3 من المحاولات