إضافة مهمة
جزء من قسم Logic & Flow في رحلة Rust على Coddy — الدرس 16 من 66.
التحدي
سهلستتلقى مدخلين: الأول، قائمة مهام موجودة مفصولة بفاصلة، والثاني، مهمة جديدة لإضافتها. اقرأ كلا المدخلين، وأنشئ vector من المهام الموجودة، وأضف المهمة الجديدة إلى الـ vector، واطبع قائمة المهام المحدثة.
المتطلبات:
- اقرأ المدخل الأول الذي يحتوي على أوصاف المهام المفصولة بفاصلة (على سبيل المثال،
Buy groceries,Call dentist) - قم بتقسيم السلسلة النصية بواسطة الفواصل للحصول على المهام الفردية
- أنشئ vector قابلاً للتعديل (mutable vector) وأضف كل مهمة موجودة إليه
- اقرأ المدخل الثاني الذي يحتوي على المهمة الجديدة لإضافتها
- استخدم
.push()لإضافة المهمة الجديدة إلى الـ vector - اطبع العدد الإجمالي للمهام بالتنسيق:
Total tasks: X - اطبع كل مهمة في سطر منفصل بالتنسيق:
Task: [task description]
المدخلات:
- السطر الأول: أوصاف المهام مفصولة بفاصلة (على سبيل المثال،
Buy groceries,Call dentist) - السطر الثاني: مهمة جديدة لإضافتها (على سبيل المثال،
Finish homework)
المخرجات:
- السطر الأول:
Total tasks: Xحيث X هو العدد الإجمالي للمهام بعد إضافة المهمة الجديدة - الأسطر التالية: كل مهمة مطبوعة كـ
Task: [task description]
جرّب بنفسك
use std::io;
fn main() {
// قراءة المدخل الأول (المهام المفصولة بفاصلة)
let mut existing_tasks = String::new();
io::stdin().read_line(&mut existing_tasks).expect("Failed to read line");
let existing_tasks = existing_tasks.trim();
// قراءة المدخل الثاني (المهمة الجديدة لإضافتها)
let mut new_task = String::new();
io::stdin().read_line(&mut new_task).expect("Failed to read line");
let new_task = new_task.trim();
// TODO: اكتب كودك أدناه
// تقسيم existing_tasks بواسطة الفواصل وإنشاء متجه (vector) قابل للتعديل
// إضافة المهمة الجديدة إلى المتجه
// طباعة العدد الإجمالي للمهام
// طباعة كل مهمة بالتنسيق المطلوب
}جميع دروس Logic & Flow
1تدفق التحكم المتقدم
تعبير 'match'مطابقة قيم متعددةمطابقة النطاقاتتعبير 'if let'الحلقات التكرارية كتعبيراتمراجعة - محلل أوامر بسيط4تجميع البيانات باستخدام Structs
ما هو الـ Struct؟نظرة عامة على الـ Structsالوصول إلى حقول الـ Structالـ Structs القابلة للتعديلالـ Structs كمعاملات للدوالالـ Tuple Structsمراجعة - إنشاء Book Struct7معالجة الأخطاء باستخدام 'Result'
ما هو 'Result'؟استخدام 'match' مع 'Result'is_ok() و is_err()اختصارات: unwrap و expectعامل علامة الاستفهام '?'تحويل السلاسل النصية إلى أرقامملخص - دالة القسمة الآمنة10الـ Closures والدوال المجهولة
ما هو الـ Closure؟تعريف Closure بسيطالـ Closures مع المعاملاتالتقاط البيئة المحيطةملخص - Closure الجامع البسيط2مقدمة في الـ Vectors
ما هو الـ Vector؟إنشاء Vectorإضافة عناصر باستخدام pushالوصول إلى عناصر الـ Vectorالتكرار عبر الـ Vectorالتكرار القابل للتعديل (Mutable Iteration)إزالة العناصرمراجعة - متتبع نقاط بسيط5أزواج (المفتاح والقيمة) مع Hash Maps
ما هو Hash Map؟إنشاء Hash Mapإدراج أزواج (المفتاح والقيمة)الوصول إلى القيمالتكرار عبر Hash Mapتحديث قيمةإزالة زوجملخص - عداد الكلمات6التعامل مع غياب القيم باستخدام 'Option'
ما هو الـ 'Option'؟استخدام 'match' مع 'Option''is_some()' و 'is_none()'فك تغليف الـ 'Option'الدالة 'expect'توفير قيمة افتراضية: 'unwrap_or'مراجعة - البحث عن عنصر9شرائح الـ String والمزيد
String مقابل &strإنشاء شرائح الـ Stringالشرائح كمعاملات للدوالشرائح أخرىمراجعة - إيجاد الكلمة الأولى