ملخص - مشغل الوسائط
جزء من قسم البرمجة كائنية التوجه في رحلة Rust على Coddy. الدرس 34 من 61.
التحدي
سهللنبنِ نظامًا بسيطًا لتشغيل الوسائط يوضّح كيف يمكن لأنواع الوسائط المختلفة مشاركة واجهة مشتركة من خلال trait!
ستنظّم الكود الخاص بك عبر ثلاثة ملفات:
playable.rs: Define trait من النوعPlayableيكون public، مع methodplay(&self)تطبع مخرجات عند استدعائها. يمثّل هذا trait الإمكانية المشتركة التي ستكون لدى جميع أنواع الوسائط.media.rs: أنشئ بنيتين public تطبّقان trait الخاص بك:Audio: مع fieldtitleمن النوع public (String)، يطبعPlaying audio: {title}عند تشغيلهVideo: مع fieldtitleمن النوع public (String)، يطبعPlaying video: {title}عند تشغيله
main.rs: اجمع الوحدات الخاصة بك وأنشئ instances من كلا نوعَي الوسائط باستخدام المدخلات المقدّمة. استدعِ methodplayعلى كل منهما لتوضيح كيف ينتج trait نفسه مخرجات مختلفة استنادًا إلى نوع الوسائط.
يجب أن تتبع مخرجاتك هذا التنسيق:
Playing audio: {audio_title}
Playing video: {video_title}على سبيل المثال، مع المدخلين Bohemian Rhapsody وThe Matrix:
Playing audio: Bohemian Rhapsody
Playing video: The Matrixستتلقى مدخلين: عنوانًا صوتيًا وعنوان فيديو.
جرّب بنفسك
mod playable;
mod media;
use media::{Audio, Video};
use playable::Playable;
fn main() {
// قراءة المدخلات
let mut audio_title = String::new();
std::io::stdin().read_line(&mut audio_title).expect("Failed to read line");
let audio_title = audio_title.trim().to_string();
let mut video_title = String::new();
std::io::stdin().read_line(&mut video_title).expect("Failed to read line");
let video_title = video_title.trim().to_string();
// TODO: أنشئ مثيل Audio باستخدام audio_title
// TODO: أنشئ مثيل Video باستخدام video_title
// TODO: استدعِ play() على كلا المثيلين
}
جميع دروس البرمجة كائنية التوجه
1الأساليب والسلوك
مقدمة في كتل التنفيذمعامل Selfالأساليب القابلة للتعديلالدوال المرتبطةكتل تنفيذ متعددةتسلسل الأساليبمراجعة - إجراءات المستطيل4مشروع: حيوان أليف افتراضي
تعريف الحيوان الأليفإطعام الحيوان الأليف2التغليف والوحدات البرمجية
أساسيات الوحدات البرمجيةالكلمة المفتاحية Publicالحقول الخاصةدوال Gettersدوال Settersمراجعة - الخزانة الآمنة5الأنواع العامة (Generics)
الـ Structs العامةالـ Methods العامةأنواع عامة متعددةالـ Functions العامةمراجعة - Coordinate Point3التعدادات المتقدمة (Advanced Enums)
التعدادات مع البياناتالأساليب (Methods) في التعداداتمطابقة حالات البياناتمراجعة التعداد Optionملخص - التعداد Shape6تعريف الـ Traits
ما هي الـ Trait؟تنفيذ الـ Traitsالتنفيذات الافتراضيةتجاوز التنفيذات الافتراضيةالـ Traits مع المعاملاتملخص - مشغل الوسائطتدرّب بنفسك: مترجم Rust عبر الإنترنت