حالة القائمة: isEmpty و isNotEmpty
جزء من قسم Logic & Flow في رحلة Dart على Coddy — الدرس 2 من 65.
قبل التعامل مع عناصر القائمة، من الضروري معرفة ما إذا كانت قائمتك تحتوي بالفعل على أي عناصر. توفر Dart خاصيتين بسيطتين للتحقق من حالة القائمة: isEmpty و isNotEmpty.
تعيد الخاصية isEmpty القيمة true إذا كانت القائمة لا تحتوي على عناصر، والقيمة false إذا كانت تحتوي على عنصر واحد على الأقل. تعمل الخاصية isNotEmpty بطريقة عكسية - فهي تعيد true عندما تحتوي القائمة على عناصر و false عندما تكون فارغة.
List<String> emptyCart = [];
List<String> shoppingCart = ['apples', 'bread', 'milk'];
print(emptyCart.isEmpty); // صحيح
print(emptyCart.isNotEmpty); // خطأ
print(shoppingCart.isEmpty); // خطأ
print(shoppingCart.isNotEmpty); // صحيحتعد هذه الخصائص مفيدة بشكل خاص لمنع الأخطاء عند محاولة الوصول إلى عناصر القائمة. يساعدك التحقق مما إذا كانت القائمة فارغة قبل استخدام خصائص مثل .first أو .last على كتابة كود أكثر أماناً وموثوقية.
التحدي
سهلقم بإنشاء برنامج يدير نظام زمام المهام (task queue) من خلال التحقق مما إذا كانت قوائم المهام فارغة أو تحتوي على عناصر. يجب على برنامجك القيام بما يلي:
- قراءة مدخل نصي (string) يمثل اسم الزمام (queue name)
- قراءة مدخلات نصية متعددة تمثل المهام (ينتهي الإدخال عندما تتلقى سلسلة فارغة)
- استخدام خاصية
isEmptyللتحقق مما إذا كانت قائمة المهام فارغة - استخدام خاصية
isNotEmptyللتحقق مما إذا كانت قائمة المهام تحتوي على مهام - طباعة حالة الزمام بالتنسيق الدقيق الموضح أدناه
على سبيل المثال، إذا كان اسم الزمام هو "Daily Tasks" والمهام هي "Review emails"، و "Attend meeting"، و "Write report"، فيجب أن يخرج برنامجك ما يلي:
Queue: Daily Tasks
Has tasks: true
Is empty: false
Task count: 3
Status: Ready for processingإذا كان اسم الزمام هو "Weekend Tasks" ولم يتم توفير أي مهام (إدخال فارغ)، فيجب أن يخرج برنامجك ما يلي:
Queue: Weekend Tasks
Has tasks: false
Is empty: true
Task count: 0
Status: No tasks to processيجب أن يستخدم برنامجك كلاً من خاصيتي isEmpty و isNotEmpty لتحديد حالة الزمام. يجب أن تكون رسالة الحالة "Ready for processing" عند وجود مهام، و "No tasks to process" عندما يكون الزمام فارغاً.
ورقة مرجعية
استخدم الخاصيتين isEmpty و isNotEmpty للتحقق مما إذا كانت القائمة تحتوي على عناصر:
List<String> emptyCart = [];
List<String> shoppingCart = ['apples', 'bread', 'milk'];
print(emptyCart.isEmpty); // true
print(emptyCart.isNotEmpty); // false
print(shoppingCart.isEmpty); // false
print(shoppingCart.isNotEmpty); // trueتساعد هذه الخصائص في منع الأخطاء عند الوصول إلى عناصر القائمة وتجعل الكود أكثر أماناً وموثوقية.
جرّب بنفسك
import 'dart:io';
void main() {
// قراءة اسم الطابور
String? queueName = stdin.readLineSync();
// قراءة المهام حتى يتم استلام سلسلة نصية فارغة
List<String> tasks = [];
String? task;
while ((task = stdin.readLineSync()) != null && task!.isNotEmpty) {
tasks.add(task);
}
// TODO: اكتب الكود الخاص بك أدناه
// استخدم خصائص tasks.isEmpty و tasks.isNotEmpty للتحقق من حالة الطابور
// حدد رسالة الحالة المناسبة بناءً على ما إذا كانت المهام موجودة أم لا
// طباعة النتائج
print('Queue: $queueName');
// طباعة ما إذا كان يحتوي على مهام، أو فارغ، وعدد المهام، والحالة
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس 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المجموعات
ما هي المجموعة؟إنشاء مجموعةالإضافة والحذف من المجموعاتالتحقق من وجود عناصر في المجموعةتحويل قائمة إلى مجموعةاتحاد المجموعاتتقاطع المجموعاتالفرق بين المجموعاتمراجعة - قائمة ضيوف فريدة