الإضافة إلى القائمة: insert
جزء من قسم المنطق وتدفق التنفيذ في رحلة Dart على Coddy. الدرس 4 من 65.
عندما تحتاج إلى إضافة عنصر إلى موضع محدد في قائمة، تمنحك الطريقة insert() تحكمًا دقيقًا في موضع العنصر الجديد. وعلى خلاف الطريقة add()، التي تضيف العناصر دائمًا إلى نهاية القائمة، تتيح لك insert() وضع عنصر في أي موضع تختاره.
تأخذ الطريقة insert() وسيطين: موضع الفهرس الذي تريد إدراج العنصر فيه، والعنصر نفسه. عند إدراج عنصر، تنتقل جميع العناصر الموجودة في ذلك الموضع وما بعده موضعًا واحدًا إلى اليمين.
List<String> tasks = ['Buy groceries', 'Walk the dog', 'Read a book'];
// أدرج مهمة جديدة في البداية (الفهرس 0)
tasks.insert(0, 'Check emails');
print(tasks); // ['Check emails', 'Buy groceries', 'Walk the dog', 'Read a book']تكون هذه الطريقة مفيدة بشكل خاص عندما يكون لترتيب العناصر أهمية، مثل قوائم الأولويات أو الجداول الزمنية أو أي حالة تحتاج فيها إلى الحفاظ على تسلسل محدد. إن إمكانية الإدراج في أي موضع تجعل insert() أداة قوية لإدارة المجموعات المرتبة.
التحدي
سهلأنشئ برنامجًا يدير نظامًا للمهام ذات الأولوية، وذلك بإدراج المهام العاجلة في مواضع محددة ضمن قائمة مهام موجودة. يجب أن يقوم برنامجك بما يلي:
- قراءة مُدخل نصي يمثّل اسم قائمة المهام
- قراءة عدة مُدخلات نصية تمثّل المهام الموجودة (سينتهي المُدخل عند تلقي سلسلة نصية فارغة)
- قراءة مُدخل نصي يمثّل مهمة عاجلة لإدراجها
- قراءة مُدخل عدد صحيح يمثّل الموضع الذي ينبغي إدراج المهمة العاجلة فيه
- استخدام الطريقة
insert()لإضافة المهمة العاجلة في الموضع المحدد - طباعة قائمة المهام المحدّثة بالتنسيق الدقيق الموضّح أدناه
على سبيل المثال، إذا كان اسم قائمة المهام هو "Work Schedule"، وكانت المهام الموجودة هي "Review documents" و"Team meeting" و"Submit report"، وكانت المهمة العاجلة هي "Client call"، وكان الموضع هو 1، فينبغي أن يُخرج برنامجك ما يلي:
Task List: Work Schedule
Original tasks: [Review documents, Team meeting, Submit report]
Inserted: Client call at position 1
Updated tasks: [Review documents, Client call, Team meeting, Submit report]
Total tasks: 4إذا كان اسم قائمة المهام هو "Daily Goals"، وكانت المهام الموجودة هي "Exercise" و"Read book"، وكانت المهمة العاجلة هي "Buy groceries"، وكان الموضع هو 0، فينبغي أن يُخرج برنامجك ما يلي:
Task List: Daily Goals
Original tasks: [Exercise, Read book]
Inserted: Buy groceries at position 0
Updated tasks: [Buy groceries, Exercise, Read book]
Total tasks: 3يجب أن يستخدم برنامجك الطريقة insert() لإضافة المهمة العاجلة في الموضع المحدد. سيكون مُدخل الموضع دائمًا فهرسًا صالحًا (بين 0 وطول قائمة المهام الموجودة).
جرّب بنفسك
import 'dart:io';
void main() {
// اقرأ اسم قائمة المهام
String? taskListName = stdin.readLineSync();
// اقرأ المهام الموجودة حتى الوصول إلى سلسلة فارغة
List<String> tasks = [];
while (true) {
String? task = stdin.readLineSync();
if (task == null || task.isEmpty) {
break;
}
tasks.add(task);
}
// اقرأ المهمة العاجلة والموضع
String? urgentTask = stdin.readLineSync();
int position = int.parse(stdin.readLineSync()!);
// احفظ المهام الأصلية قبل الإدراج
String originalTasks = tasks.toString();
// TODO: اكتب الكود الخاص بك أدناه
// استخدم الدالة insert() لإضافة المهمة العاجلة في الموضع المحدد
// اطبع النتائج بالتنسيق المطلوب
print('Task List: $taskListName');
print('Original tasks: $originalTasks');
print('Inserted: $urgentTask at position $position');
// اطبع المهام المحدّثة والعدد الإجمالي
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1التعامل المتقدم مع القوائم
خصائص القائمة: first و lastحالة القائمة: isEmpty و isNotEmptyعكس القائمةالإضافة إلى القائمة: insertالحذف من القائمة: removeWhereالبحث في القائمة: indexOfفرز القائمةخلط القائمةملخص - منظم القوائم4معالجة الـ Map المتقدمة
التكرار عبر الـ Mapالتحقق من المفاتيح والقيمخصائص الـ Map: keys و valuesإضافة مشروطة: putIfAbsentإزالة العناصر من الـ Mapالـ Maps المتداخلةمراجعة - تحديث المخزون2عمليات القوائم الوظيفية
التحويل باستخدام 'map'التصفية باستخدام 'where'استخدام '.toList()'التحقق من الشروط باستخدام 'any'الشروط باستخدام 'every'البحث باستخدام 'firstWhere'مراجعة - تصفية البيانات5مشروع: حاسبة عربة التسوق
إعداد المشروعإضافة العناصر إلى العربة3المجموعات
ما هي المجموعة؟إنشاء مجموعةالإضافة والحذف من المجموعاتالتحقق من وجود عناصر في المجموعةتحويل قائمة إلى مجموعةاتحاد المجموعاتتقاطع المجموعاتالفرق بين المجموعاتمراجعة - قائمة ضيوف فريدةتدرّب بنفسك: مترجم Dart عبر الإنترنت