ملخص - التعامل مع الـ Null بأمان
جزء من قسم الأساسيات في رحلة Dart على Coddy. الدرس 82 من 94.
التحدي
سهلأنت تبني نظامًا لملفات تعريف المستخدمين لتطبيق جوّال. أنشئ فئة UserProfile توضّح فهمك لميزات أمان القيم الخالية في Dart.
طبّق فئة UserProfile بما يلي:
- خصائص غير قابلة للقيمة الخالية (يجب أن تكون لها قيمة دائمًا):
idمن النوعintcreatedDateمن النوعString
- خصائص قابلة للقيمة الخالية (يمكن أن تكون null عند التهيئة):
nameمن النوعString?emailمن النوعString?ageمن النوعint?
- خاصية تتم تهيئتها لاحقًا:
displayNameمن النوعString، ويتم التصريح عنها باستخدام الكلمة المفتاحيةlate
- المُنشئ:
- يقبل
idوcreatedDateكمعاملين مطلوبين - يهيّئ
displayNameإلى"Guest"
- يقبل
الطريقة:
<strong>void printProfile()</strong>تطبع ملف تعريف المستخدم بالتنسيق التالي:User Profile: ID: <id> Created: <createdDate> Name: <name or 'Not provided'> Email: <email or 'Not provided'> Age: <age or 'Not provided'> Display Name: <displayName> -------------------- الطريقة:
<strong>void updateEmail(String? newEmail)</strong>- تحدّث الخاصية
emailبالقيمة الجديدة.
- تحدّث الخاصية
- الطريقة:
<strong>String getDisplayName()</strong>- إذا لم تكن
nameتساوي null، فعيّنdisplayName = name!(باستخدام معامل تأكيد عدم القيمة الخالية) - تعيد القيمة الحالية لـ
displayName
- إذا لم تكن
مهم: بعد تحديث الخاصية name، يجب استدعاء getDisplayName() لتحديث الحقل displayName قبل طباعة ملف التعريف مرة أخرى.
أكمل التعليمات البرمجية لإنشاء ملف تعريف، وتحديثه، وعرض المعلومات كما هو موضح في الناتج المتوقع.
جرّب بنفسك
void main() {
// أنشئ ملف تعريف مستخدم
final profile = UserProfile(1, 'today');
// اطبع الملف الشخصي الأولي
profile.printProfile();
// حدّث الملف الشخصي
profile.name = 'John Doe';
profile.updateEmail('john@example.com');
profile.age = 30;
// حدّث اسم العرض واطبع الملف الشخصي المحدّث
profile.getDisplayName(); // استدعِ هذا لتحديث displayName
profile.printProfile();
}
class UserProfile {
// TODO: أضف الخصائص (id, createdDate, name, email, age, displayName)
// TODO: أنشئ المُنشئ
// TODO: نفّذ دالة printProfile()
// TODO: نفّذ دالة updateEmail()
// TODO: نفّذ دالة getDisplayName()
}جميع دروس الأساسيات
4المعاملات - الجزء الثاني
معاملات المقارنةالمعامل المنطقي ANDالمعامل المنطقي ORالمعامل المنطقي NOTمعاملات فحص النوعملخص - إجراء المقارنات7التعامل مع النصوص (Strings)
دمج النصوص (String Concatenation)تضمين النصوص (String Interpolation)النصوص متعددة الأسطر (Multi-line Strings)خصائص النصوص (String Properties)دوال النصوص الأساسية (String Methods)10المجموعات - أساسيات الخرائط
ما هي الخرائط؟إنشاء خريطةالوصول إلى القيم عبر المفتاحأزواج المفتاح والقيمةالحصول على حجم الخريطةالحصول على المفاتيحالحصول على القيمالتحقق من وجود مفتاح13أمان الـ Null بشكل متعمق
فهم الـ Nullالأنواع القابلة لقيمة Nullالأنواع غير القابلة لقيمة Nullعامل التأكيد على الـ Nullالتهيئة المتأخرةملخص - التعامل مع الـ Null بأمان2المتغيرات وأنواع البيانات الأساسية
ما هي المتغيرات؟النصوص (Strings)الأعداد الصحيحة (int)الأعداد العشرية (double)القيم المنطقية (bool)استنتاج النوع باستخدام 'var'المتغيرات النهائية (Final)المتغيرات الثابتة (Constant)قواعد التسميةأساسيات الـ Null Safetyملخص - التصريح عن المتغيرات8مسار التحكم - الحلقات التكرارية
حلقة 'for' التكراريةحلقة 'while' التكراريةحلقة 'do-while' التكراريةاستخدام 'break' في الحلقات التكراريةاستخدام 'continue' في الحلقات التكراريةملخص - تكرار الكود البرمجي3المعاملات - الجزء الأول
المعاملات الحسابيةالقسمة الصحيحةمعامل باقي القسمة (Modulo)الزيادة والنقصاناختصارات التعيينملخص - الحسابات البسيطة6تدفق التحكم - اتخاذ القرار
جملة 'if'جملة 'else'جملة 'else if'ملخص - القرارات البسيطةجمل 'if' المتداخلةجملة 'switch'9المجموعات - أساسيات القوائم
ما هي القوائم؟إنشاء قائمةالوصول عبر الفهرسالحصول على طول القائمةإضافة عناصرإزالة عناصرالتحقق مما إذا كانت القائمة فارغةالتكرار عبر القائمةتدرّب بنفسك: مترجم Dart عبر الإنترنت