أساسيات الـ Null Safety
جزء من قسم الأساسيات في رحلة Dart على Coddy. الدرس 14 من 94.
تساعد سلامة القيم الفارغة على منع تعطل التطبيقات بشكل غير متوقع، من خلال التحكم في المتغيرات التي يمكن أن تكون فارغة (null).
افتراضيًا، يجب أن تحتوي المتغيرات على قيمة:
void main() {
String name = 'Dart';
print(name); // الناتج: Dart
// هذا سيسبب مشكلات:
// name = null; // غير مسموح
}أضف ? بعد النوع للسماح بالقيم الفارغة:
void main() {
String? name = 'Dart';
print(name); // المخرجات: Dart
// يمكننا الآن إسناد null
name = null;
print(name); // المخرجات: null
}يمكنك التصريح عن متغيرات قابلة لأن تكون فارغة من أي نوع:
void main() {
int? age; // لا توجد قيمة ابتدائية، لذا تكون القيمة الافتراضية null
double? price = 19.99;
bool? isAvailable = true;
print(age); // الناتج: null
print(price); // الناتج: 19.99
print(isAvailable); // الناتج: true
// يمكننا تغيير أيٍّ من هذه القيم إلى null
price = null;
isAvailable = null;
}
تساعد السلامة من القيم الفارغة على حماية تطبيقك من الأعطال غير المتوقعة التي تحدث عندما يحاول الكود استخدام قيم فارغة في العمليات.
التحدي
مبتدئأنشئ برنامجًا بلغة Dart يوضّح أساسيات الأمان من القيم الفارغة باستخدام العامل ?:
- صرّح عن متغير من النوع String باسم
usernameواجعل قيمتهnullباستخدام عامل الأمان من القيم الفارغة?(String?) - صرّح عن متغير من النوع int باسم
userAgeواجعل قيمتهnullباستخدام عامل الأمان من القيم الفارغة - اطبع كلا المتغيرين مع تسميات بالتنسيق التالي تمامًا:
Username: null
User age: nullثم:
- أسند القيمة
"DartLearner"إلى المتغيرusername - أسند القيمة
25إلى المتغيرuserAge - اطبع كلا المتغيرين مرة أخرى بالتنسيق نفسه تمامًا كما في السابق
يجب أن يطابق ناتجك التنسيق الموضح أعلاه تمامًا.
جرّب بنفسك
void main() {
// صرّح هنا عن متغيراتك التي تقبل القيمة الفارغة
String? username = ?;
int? userAge = ?;
// اطبع القيم الأولية مع التسميات
print("Username: " + username.toString());
print("User age: " + userAge.toString());
// أسند قيمًا جديدة إلى المتغيرات
username = ?;
userAge = ?;
// اطبع القيم المحدّثة بالتسميات نفسها
print("Username: " + username.toString());
print("User age: " + userAge.toString());
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الثاني
معاملات المقارنةالمعامل المنطقي ANDالمعامل المنطقي ORالمعامل المنطقي NOTمعاملات فحص النوعملخص - إجراء المقارنات7التعامل مع النصوص (Strings)
دمج النصوص (String Concatenation)تضمين النصوص (String Interpolation)النصوص متعددة الأسطر (Multi-line Strings)خصائص النصوص (String Properties)دوال النصوص الأساسية (String Methods)10المجموعات - أساسيات الخرائط
ما هي الخرائط؟إنشاء خريطةالوصول إلى القيم عبر المفتاحأزواج المفتاح والقيمةالحصول على حجم الخريطةالحصول على المفاتيحالحصول على القيمالتحقق من وجود مفتاح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 عبر الإنترنت