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

الـ Tuple Structs

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

بينما تستخدم الهياكل (structs) العادية حقولاً مسماة، تقدم لغة Rust نوعاً آخر يسمى tuple structs. توفر هذه الهياكل طريقة أكثر إيجازاً لإنشاء أنواع مخصصة عندما لا تحتاج إلى تسمية كل حقل بشكل فردي.

تجمع بنية الصف (tuple struct) بين فوائد إنشاء نوع جديد وبساطة الصف (tuple). يمكنك تعريفها باستخدام الكلمة المفتاحية struct متبوعة باسم النوع وأنواع الحقول بين قوسين:

struct Color(i32, i32, i32);

هذا ينشئ نوع Color يحتوي على ثلاث قيم i32، تمثل قيم ألوان RGB. على عكس الـ structs العادية، لا تقوم بتحديد أسماء الحقول - بل تصل إلى القيم من خلال موقعها، تماماً كما هو الحال مع الـ tuples.

لإنشاء مثيل من tuple struct، قم بتوفير القيم بين قوسين:

let red = Color(255, 0, 0);

يمكنك الوصول إلى الحقول الفردية باستخدام تدوين النقطة (dot notation) مع فهرس الحقل: red.0 يعطيك القيمة الأولى، red.1 الثانية، وهكذا.

challenge icon

التحدي

سهل

ستتلقى ثلاثة مدخلات: قيمة اللون الأحمر (كعدد صحيح)، وقيمة اللون الأخضر (كعدد صحيح)، وقيمة اللون الأزرق (كعدد صحيح). قم بتعريف هيكل tuple باسم Color يحتوي على ثلاث قيم من نوع i32 تمثل مكونات ألوان RGB. قم بإنشاء مثيل (instance) من هيكل الـ tuple هذا باستخدام قيم المدخلات، ثم قم بالوصول إلى كل مكون لوني وطباعته باستخدام تدوين الفهرس (index notation).

المتطلبات:

  • تعريف هيكل tuple باسم Color مع ثلاثة حقول من نوع i32
  • قراءة المدخل الأول وتحويله إلى i32 لقيمة اللون الأحمر
  • قراءة المدخل الثاني وتحويله إلى i32 لقيمة اللون الأخضر
  • قراءة المدخل الثالث وتحويله إلى i32 لقيمة اللون الأزرق
  • إنشاء مثيل من هيكل الـ tuple‏ Color بهذه القيم
  • الوصول إلى كل حقل باستخدام تدوين النقطة مع الفهارس (0، 1، 2) وطباعة معلومات اللون بالتنسيق الدقيق الموضح أدناه

المدخلات:

  • السطر الأول: قيمة اللون الأحمر كعدد صحيح (مثلاً، 255)
  • السطر الثاني: قيمة اللون الأخضر كعدد صحيح (مثلاً، 128)
  • السطر الثالث: قيمة اللون الأزرق كعدد صحيح (مثلاً، 0)

المخرجات:

  • السطر الأول: Red: [red_value]
  • السطر الثاني: Green: [green_value]
  • السطر الثالث: Blue: [blue_value]

ورقة مرجعية

الـ tuple struct هو هيكل (struct) بدون حقول مسماة. يجمع بين فوائد إنشاء نوع جديد وبساطة الصف (tuple).

عرّف هيكل صف (tuple struct) باستخدام الكلمة المفتاحية struct متبوعة باسم النوع وأنواع الحقول بين قوسين:

struct Color(i32, i32, i32);

أنشئ مثيلاً (instance) بتوفير القيم بين قوسين:

let red = Color(255, 0, 0);

يمكنك الوصول إلى الحقول باستخدام تدوين النقطة (dot notation) مع فهرس الحقل:

red.0  // القيمة الأولى
red.1  // القيمة الثانية
red.2  // القيمة الثالثة

جرّب بنفسك

use std::io;

// TODO: قم بتعريف هيكل Color tuple هنا

fn main() {
    // قراءة قيمة اللون الأحمر
    let mut red_input = String::new();
    io::stdin().read_line(&mut red_input).expect("Failed to read line");
    let red: i32 = red_input.trim().parse().expect("Invalid input");
    
    // قراءة قيمة اللون الأخضر
    let mut green_input = String::new();
    io::stdin().read_line(&mut green_input).expect("Failed to read line");
    let green: i32 = green_input.trim().parse().expect("Invalid input");
    
    // قراءة قيمة اللون الأزرق
    let mut blue_input = String::new();
    io::stdin().read_line(&mut blue_input).expect("Failed to read line");
    let blue: i32 = blue_input.trim().parse().expect("Invalid input");
    
    // TODO: قم بإنشاء مثيل لهيكل Color tuple باستخدام قيم المدخلات
    
    // TODO: قم بالوصول إلى كل مكون من مكونات اللون وطباعته باستخدام تدوين الفهرس
    // Red: [value], Green: [value], Blue: [value] :التنسيق
}
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow