الأنواع غير القابلة لقيمة Null
جزء من قسم Fundamentals في رحلة Dart على Coddy — الدرس 79 من 94.
الأنواع غير القابلة للقيمة null (Non-nullable types) في Dart هي الافتراضية لجميع المتغيرات. عندما تعلن عن متغير بدون الرمز ?، يجب أن يحتوي دائمًا على قيمة ولا يمكن أن يكون null.
أنشئ متغير String غير قابل للقيمة الخالية (non-nullable):
String name = 'Dart';
print(name);بعد تنفيذ الكود أعلاه، ستكون النتيجة:
Dartمحاولة تعيين null لمتغير غير قابل للإلغاء (non-nullable) تؤدي إلى حدوث خطأ:
// سيؤدي هذا إلى حدوث خطأ:
// String language = null;يجب تهيئة المتغيرات غير القابلة للإلغاء (non-nullable) بقيمة:
int score = 100;
bool isActive = true;
double price = 9.99;
print('Score: $score, Active: $isActive, Price: $price');بعد تنفيذ الكود أعلاه، ستكون النتيجة:
Score: 100, Active: true, Price: 9.99التحدي
مبتدئفي هذا التحدي، ستتدرب على العمل مع الأنواع غير القابلة للإلغاء (non-nullable types) في Dart. بشكل افتراضي، لا يمكن أن تكون المتغيرات في Dart فارغة (null) إلا إذا جعلتها قابلة للإلغاء صراحةً باستخدام رمز ?.
مهمتك هي إصلاح الكود من خلال تعيين قيم مناسبة للمتغيرات غير القابلة للإلغاء والتي لم يتم تهيئتها حاليًا.
المخرجات المتوقعة:
Name: John
Age: 25
Is active: true
Score: 95.5ورقة مرجعية
الأنواع غير القابلة للإلغاء (Non-nullable types) في Dart هي الافتراضية لجميع المتغيرات. يجب أن تحتوي دائماً على قيمة ولا يمكن أن تكون null.
قم بالتصريح عن متغيرات غير قابلة للإلغاء بقيم أولية:
String name = 'Dart';
int score = 100;
bool isActive = true;
double price = 9.99;لا يمكن تعيين null للمتغيرات غير القابلة للإلغاء:
// سيؤدي هذا إلى حدوث خطأ:
// String language = null;استخدم استيفاء السلسلة (string interpolation) لعرض قيم المتغيرات:
print('Score: $score, Active: $isActive, Price: $price');جرّب بنفسك
void main() {
// هذه المتغيرات غير قابلة للإلغاء (non-nullable) وتحتاج إلى قيم
// TODO: قم بتهيئة هذه المتغيرات بالقيم المناسبة
String name;
int age;
bool isActive;
double score;
// سيقوم هذا الكود بطباعة القيم
print('Name: $name');
print('Age: $age');
print('Is active: $isActive');
print('Score: $score');
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
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المجموعات - أساسيات القوائم
ما هي القوائم؟إنشاء قائمةالوصول عبر الفهرسالحصول على طول القائمةإضافة عناصرإزالة عناصرالتحقق مما إذا كانت القائمة فارغةالتكرار عبر القائمة