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