إنشاء مجموعة
جزء من قسم Logic & Flow في رحلة Dart على Coddy — الدرس 18 من 65.
الآن بعد أن فهمت ما هو Set، فلنتعلم كيفية إنشاء واحد. في Dart، يمكنك إنشاء Set باستخدام الأقواس المتعرجة {} مع فصل العناصر بفواصل، بشكل مشابه لكيفية كتابة مجموعة رياضية.
Set<String> colors = {'red', 'blue', 'green'};
print(colors); // {red, blue, green}من المهم عدم الخلط بين هذا النحو وبين إنشاء Map. بينما يستخدم كلاهما الأقواس المتعرجة، فإن Set يحتوي على قيم فقط، بينما يحتوي Map على أزواج مفتاح-قيمة مفصولة بنقطتين. يجب التصريح عن Set فارغ بشكل صريح مع نوع لتمييزه عن Map فارغ.
Set<String> emptySet = <String>{}; // مجموعة فارغة
Map<String, int> emptyMap = {}; // خريطة فارغةيمكنك أيضاً إنشاء Set بقيم مكررة، ولكن تذكر أن التكرارات ستتم إزالتها تلقائياً، مما يترك فقط العناصر الفريدة في المجموعة النهائية.
التحدي
سهلقم بإنشاء برنامج يدير نظام وسم (tagging) للمدونة من خلال إنشاء مجموعة (Set) من الوسوم الفريدة لمنشور مدونة. يجب على برنامجك القيام بما يلي:
- قراءة مدخل نصي (string) يمثل عنوان منشور المدونة
- قراءة مدخلات نصية متعددة تمثل الوسوم المراد إضافتها إلى المنشور (سينتهي الإدخال عندما تتلقى
"done") - إنشاء مجموعة (Set) من النصوص لتخزين الوسوم الفريدة
- إضافة كل وسم إلى المجموعة (سيتم إزالة التكرارات تلقائياً)
- طباعة نتائج وسم المدونة بالتنسيق الدقيق الموضح أدناه
على سبيل المثال، إذا كان عنوان المدونة هو "Introduction to Dart Programming" والوسوم هي "programming"، "dart"، "tutorial"، "programming"، "beginner"، يجب أن يخرج برنامجك ما يلي:
Blog Post: Introduction to Dart Programming
Tags added: [programming, dart, tutorial, programming, beginner]
Unique tags: {programming, dart, tutorial, beginner}
Total unique tags: 4
Status: Blog post tagged successfullyإذا كان عنوان المدونة هو "Web Development Tips" والوسوم هي "web"، "html"، "css"، "web"، "html"، "javascript"، يجب أن يخرج برنامجك ما يلي:
Blog Post: Web Development Tips
Tags added: [web, html, css, web, html, javascript]
Unique tags: {web, html, css, javascript}
Total unique tags: 4
Status: Blog post tagged successfullyإذا كان عنوان المدونة هو "Getting Started" والوسوم هي "guide"، "basics"، يجب أن يخرج برنامجك ما يلي:
Blog Post: Getting Started
Tags added: [guide, basics]
Unique tags: {guide, basics}
Total unique tags: 2
Status: Blog post tagged successfullyيجب أن يقوم برنامجك بإنشاء مجموعة (Set) باستخدام صيغة الأقواس المتعرجة {} وإظهار كيفية تعامل المجموعات تلقائياً مع إزالة التكرارات. قم بتخزين جميع الوسوم المدخلة في قائمة (list) أولاً لإظهار ما تم إدخاله في الأصل، ثم قم بإنشاء المجموعة لإظهار الوسوم الفريدة. يجب أن تعرض المجموعة محتوياتها بتنسيق المجموعة القياسي مع الأقواس المتعرجة.
ورقة مرجعية
أنشئ Set باستخدام الأقواس المتعرجة {} مع عناصر مفصولة بفواصل:
Set<String> colors = {'red', 'blue', 'green'};
print(colors); // {red, blue, green}بالنسبة للمجموعات (Sets) الفارغة، صرح عن النوع بشكل صريح للتمييز بينها وبين الخرائط (Maps) الفارغة:
Set<String> emptySet = <String>{}; // مجموعة فارغة
Map<String, int> emptyMap = {}; // خريطة فارغةتقوم المجموعات (Sets) تلقائيًا بإزالة القيم المكررة، مع الاحتفاظ بالعناصر الفريدة فقط.
جرّب بنفسك
import 'dart:io';
void main() {
// قراءة عنوان منشور المدونة
String? title = stdin.readLineSync();
// قراءة الوسوم حتى يتم إدخال "done"
List<String> allTags = [];
String? tag;
while ((tag = stdin.readLineSync()) != "done") {
if (tag != null) {
allTags.add(tag);
}
}
// TODO: اكتب كودك هنا
// إنشاء Set من قائمة الوسوم للحصول على وسوم فريدة
// حساب العدد الإجمالي للوسوم الفريدة
// طباعة النتائج
print("Blog Post: $title");
print("Tags added: $allTags");
// طباعة الوسوم الفريدة بتنسيق Set
// طباعة إجمالي عدد الوسوم الفريدة
// طباعة رسالة الحالة
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
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المجموعات
ما هي المجموعة؟إنشاء مجموعةالإضافة والحذف من المجموعاتالتحقق من وجود عناصر في المجموعةتحويل قائمة إلى مجموعةاتحاد المجموعاتتقاطع المجموعاتالفرق بين المجموعاتمراجعة - قائمة ضيوف فريدة