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

مقدمة في كتل التنفيذ

جزء من قسم Object Oriented Programming في رحلة Rust على Coddy — الدرس 1 من 61.

في لغة Rust، تُحدد الهياكل (structs) البيانات التي يحملها النوع، لكنها لا تُحدد ما يمكن لهذا النوع فعله. لإعطاء الهيكل سلوكاً معيناً، نستخدم كتل التنفيذ (implementation blocks) مع الكلمة المفتاحية impl.

تربط كتلة التنفيذ (implementation block) الدوال (التي تُسمى methods) بهيكل (struct) معين. إليك الهيكل الأساسي:

struct Dog {
    name: String,
    age: u8,
}

impl Dog {
    fn bark(&self) {
        println!("{} says woof!", self.name);
    }
}

يخبر المقطع impl Dog لغة Rust أن كل ما بداخله ينتمي إلى الـ Dog struct. يحافظ هذا الفصل على نظافة تعريف البيانات مع السماح لك بإضافة أي عدد تريده من الـ methods في مقطع التنفيذ (implementation block).

لاستدعاء دالة (method)، استخدم تدوين النقطة (dot notation) على كائن (instance):

fn main() {
    let my_dog = Dog {
        name: String::from("Rex"),
        age: 3,
    };
    
    my_dog.bark(); // المخرجات: Rex says woof!
}

هذا النمط من فصل البيانات (الـ struct) عن السلوك (كتلة الـ impl) هو أمر أساسي لتنظيم كود Rust. في الدروس القادمة، سنستكشف كيف تصل الدوال (methods) إلى بيانات الـ struct من خلال معامل &self الذي تراه في المثال أعلاه.

challenge icon

التحدي

سهل

أنشئ Cat struct بحقلين: name (String) و lives (u8).

أضف كتلة تنفيذ (implementation block) لـ Cat مع دالة (method) تسمى meow تأخذ &self وتطبع اسم القطة متبوعًا بـ " says meow!".

ستتلقى مدخلين:

  • السطر الأول: اسم القطة (String)
  • السطر الثاني: عدد الأرواح (u8)

أنشئ نسخة (instance) من Cat بالقيم المقدمة واستدعِ الدالة meow عليها.

تنسيق المخرجات المتوقع:

{name} says meow!

ورقة مرجعية

تربط كتل التنفيذ (Implementation blocks) الدوال (methods) بالهياكل (structs) باستخدام الكلمة المفتاحية impl:

struct Dog {
    name: String,
    age: u8,
}

impl Dog {
    fn bark(&self) {
        println!("{} says woof!", self.name);
    }
}

تفصل كتلة impl تعريف البيانات (struct) عن السلوك (methods). يتم استدعاء الدوال باستخدام تدوين النقطة (dot notation):

let my_dog = Dog {
    name: String::from("Rex"),
    age: 3,
};

my_dog.bark(); // المخرجات: Rex says woof!

تستخدم الدوال المعامل &self للوصول إلى بيانات الهيكل (struct).

جرّب بنفسك

use std::io;

// TODO: قم بتعريف هيكل (struct) القطة 'Cat' مع حقول 'name' (String) و 'lives' (u8)


// TODO: أضف كتلة تنفيذ (implementation block) للقطة 'Cat' مع طريقة (method) 'meow'


fn main() {
    let mut name = String::new();
    io::stdin().read_line(&mut name).expect("Failed to read line");
    let name = name.trim().to_string();
    
    let mut lives_input = String::new();
    io::stdin().read_line(&mut lives_input).expect("Failed to read line");
    let lives: u8 = lives_input.trim().parse().expect("Failed to parse lives");
    
    // TODO: قم بإنشاء مثيل (instance) من 'Cat' واستدعاء طريقة 'meow'
    
}
quiz iconاختبر نفسك

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

جميع دروس Object Oriented Programming