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

الوصول إلى حقول الـ Struct

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

بمجرد إنشاء مثيل لـ struct، ستحتاج إلى طريقة لاسترداد القيم المخزنة بداخله. تستخدم Rust تدوين النقطة (dot notation) للوصول إلى الحقول الفردية داخل الـ struct.

الصيغة بسيطة: تكتب اسم مثيل الـ struct، متبوعاً بنقطة، ثم اسم الحقل الذي تريد الوصول إليه:

let product = Product {
    name: String::from("Laptop"),
    price: 999,
};

println!("Product: {}", product.name);
println!("Price: ${}", product.price);

يعمل تدوين النقطة (dot notation) هذا تماماً مثل الوصول إلى الخصائص في لغات البرمجة الأخرى. يمكنك استخدام القيم التي تم الوصول إليها في التعبيرات، أو تعيينها للمتغيرات، أو تمريرها إلى الدوال - فهي تتصرف تماماً مثل أي قيمة أخرى من ذلك النوع.

challenge icon

التحدي

سهل

ستتلقى ثلاثة مدخلات: اسم طراز السيارة، سنة صنع السيارة (كعدد صحيح)، والمسافة المقطوعة (كعدد صحيح). قم بتعريف هيكل Car بثلاثة حقول: model من نوع String، و year من نوع i32، و mileage من نوع i32. أنشئ مثيلاً لهذا الهيكل باستخدام قيم المدخلات، ثم قم بالوصول إلى كل حقل وطباعته.

المتطلبات:

  • قم بتعريف هيكل Car بالحقول: model: String، و year: i32، و mileage: i32
  • اقرأ المدخل الأول كطراز السيارة
  • اقرأ المدخل الثاني وقم بتحويله إلى i32 للسنة
  • اقرأ المدخل الثالث وقم بتحويله إلى i32 للمسافة المقطوعة
  • أنشئ مثيلاً لهيكل Car بهذه القيم
  • استخدم تدوين النقطة للوصول إلى كل حقل وطباعة معلومات السيارة بالتنسيق الموضح أدناه تماماً

المدخلات:

  • السطر الأول: طراز السيارة (على سبيل المثال، Tesla Model 3)
  • السطر الثاني: السنة كعدد صحيح (على سبيل المثال، 2022)
  • السطر الثالث: المسافة المقطوعة كعدد صحيح (على سبيل المثال، 15000)

المخرجات:

  • السطر الأول: Car: [model]
  • السطر الثاني: Year: [year]
  • السطر الثالث: Mileage: [mileage] km

ورقة مرجعية

للوصول إلى الحقول داخل مثيل الـ struct، استخدم صيغة النقطة (dot notation):

let product = Product {
    name: String::from("Laptop"),
    price: 999,
};

println!("Product: {}", product.name);
println!("Price: ${}", product.price);

الصيغة هي: instance_name.field_name. يمكن استخدام القيم التي تم الوصول إليها في التعبيرات، أو تعيينها لمتغيرات، أو تمريرها إلى الدوال.

جرّب بنفسك

use std::io;

// TODO: قم بتعريف هيكل Car هنا مع الحقول: model و year و mileage

fn main() {
    // قراءة طراز السيارة
    let mut model = String::new();
    io::stdin().read_line(&mut model).expect("Failed to read line");
    let model = model.trim().to_string();
    
    // قراءة السنة
    let mut year_input = String::new();
    io::stdin().read_line(&mut year_input).expect("Failed to read line");
    let year: i32 = year_input.trim().parse().expect("Invalid year");
    
    // قراءة المسافة المقطوعة
    let mut mileage_input = String::new();
    io::stdin().read_line(&mut mileage_input).expect("Failed to read line");
    let mileage: i32 = mileage_input.trim().parse().expect("Invalid mileage");
    
    // TODO: قم بإنشاء مثيل لهيكل Car باستخدام قيم الإدخال
    
    // TODO: الوصول إلى كل حقل وطباعته بالتنسيق المطلوب
    // Car: [model]
    // Year: [year]
    // Mileage: [mileage] km
}
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow