ملخص - التعداد Shape
جزء من قسم Object Oriented Programming في رحلة Rust على Coddy — الدرس 18 من 61.
التحدي
سهللنقم ببناء آلة حاسبة هندسية تستخدم enum لتمثيل أشكال مختلفة، حيث يخزن كل منها أبعاده الخاصة. سيوضح الـ Shape enum الخاص بك كيف يمكن لنوع واحد أن يحمل هياكل بيانات مختلفة ويوفر سلوكاً موحداً من خلال الدوال (methods).
ستقوم بإنشاء ملفين لتنظيم الكود الخاص بك:
shape.rs: قم بتعريفShapeenum عام مع متغيرين (variants):Circle— يحمل قيمةf64واحدة تمثل نصف القطر (صيغة tuple)Rectangle— يحمل حقولاً مسماة:width(f64) وheight(f64)
areaتستخدم مطابقة الأنماط (pattern matching) لحساب المساحة الصحيحة بناءً على المتغير. بالنسبة للدوائر، استخدم3.14159كقيمة لـ π.main.rs: قم باستيراد موديول الشكل الخاص بك، وأنشئ مثيلاً واحداً لكل متغير من متغيرات الشكل باستخدام المدخلات المقدمة، واطبع مساحة كل شكل.
يجب أن تعيد دالة area قيمة من نوع f64. عند المطابقة، قم بتفكيك (destructure) كل متغير لاستخراج أبعاده وتطبيق الصيغة المناسبة:
- مساحة الدائرة:
π × radius² - مساحة المستطيل:
width × height
يجب أن يعرض مخرجك مساحة كل شكل في سطر مستقل، مع منزلة عشرية واحدة بالضبط:
Circle area: {area}
Rectangle area: {area}على سبيل المثال، إذا كان نصف قطر الدائرة 5.0 والمستطيل بعرض 4.0 وطول 6.0، سيكون المخرج:
Circle area: 78.5
Rectangle area: 24.0ستتلقى ثلاثة مدخلات: نصف قطر الدائرة، وعرض المستطيل، وطول المستطيل.
جرّب بنفسك
mod shape;
use shape::Shape;
fn main() {
// قراءة المدخلات
let mut radius_input = String::new();
std::io::stdin().read_line(&mut radius_input).expect("Failed to read line");
let radius: f64 = radius_input.trim().parse().expect("Invalid number");
let mut width_input = String::new();
std::io::stdin().read_line(&mut width_input).expect("Failed to read line");
let width: f64 = width_input.trim().parse().expect("Invalid number");
let mut height_input = String::new();
std::io::stdin().read_line(&mut height_input).expect("Failed to read line");
let height: f64 = height_input.trim().parse().expect("Invalid number");
// TODO: إنشاء شكل Circle باستخدام radius
// TODO: إنشاء شكل Rectangle باستخدام width و height
// TODO: طباعة مساحة كل شكل بمنزلة عشرية واحدة
// التنسيق: "Circle area: {area}" و "Rectangle area: {area}"
}
جميع دروس Object Oriented Programming
1الأساليب والسلوك
مقدمة في كتل التنفيذمعامل Selfالأساليب القابلة للتعديلالدوال المرتبطةكتل تنفيذ متعددةتسلسل الأساليبمراجعة - إجراءات المستطيل4مشروع: حيوان أليف افتراضي
تعريف الحيوان الأليفإطعام الحيوان الأليف2التغليف والوحدات البرمجية
أساسيات الوحدات البرمجيةالكلمة المفتاحية Publicالحقول الخاصةدوال Gettersدوال Settersمراجعة - الخزانة الآمنة5الأنواع العامة (Generics)
الـ Structs العامةالـ Methods العامةأنواع عامة متعددةالـ Functions العامةمراجعة - Coordinate Point3التعدادات المتقدمة (Advanced Enums)
التعدادات مع البياناتالأساليب (Methods) في التعداداتمطابقة حالات البياناتمراجعة التعداد Optionملخص - التعداد Shape6تعريف الـ Traits
ما هي الـ Trait؟تنفيذ الـ Traitsالتنفيذات الافتراضيةتجاوز التنفيذات الافتراضيةالـ Traits مع المعاملاتملخص - مشغل الوسائط