Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الوصول المتفادي لـ Null

جزء من قسم Fundamentals في رحلة Dart على Coddy — الدرس 29 من 94.

يقوم معامل الوصول الآمن للقيم الفارغة (null-aware access operator) (?.) بالوصول إلى الخصائص بشكل آمن في الكائنات التي قد تكون قيمتها null، مما يمنع حدوث أخطاء وقت التشغيل (runtime errors).

void main() {
  String? name = 'Dart';
  int? length = name?.length;
  
  print('Name: $name');
  print('Length: $length');
}

مع القيم الفارغة (null)، فإنه يعيد null بدلاً من التعطل:

void main() {
  String? name = null;
  int? length = name?.length;
  
  print('Name: $name');
  print('Length: $length');
}
challenge icon

التحدي

سهل

أنشئ برنامج Dart يوضح عامل الوصول المدرك للقيم الفارغة (?.) مع شخصية لعبة:

  1. أنشئ متغير String قابل للقيمة الفارغة (nullable) يسمى playerName وقم بتعيينه إلى null
  2. أنشئ متغير int قابل للقيمة الفارغة (nullable) يسمى playerScore وقم بتعيينه إلى 100
  3. استخدم عامل الوصول المدرك للقيم الفارغة (?.) للحصول على طول playerName وتخزينه في متغير يسمى nameLength
  4. اطبع الرسالة التالية: Player name length: X (حيث X هي قيمة nameLength)
  5. قم بتحديث playerName إلى "Champion"
  6. استخدم عامل الوصول المدرك للقيم الفارغة مرة أخرى للحصول على الطول المحدث وتخزينه في nameLength
  7. اطبع الرسالة المحدثة: Player name length: X (حيث X هي القيمة الجديدة)
  8. اطبع نتيجة اللاعب بهذا التنسيق: Player score: 100

ورقة مرجعية

يقوم عامل الوصول المتنبه للقيم الفارغة (?.) بالوصول إلى الخصائص بأمان في الكائنات التي قد تكون فارغة، مما يمنع أخطاء وقت التشغيل.

عندما لا يكون الكائن فارغاً، فإنه يعيد قيمة الخاصية:

String? name = 'Dart';
int? length = name?.length; // يعيد 4

عندما يكون الكائن فارغاً، فإنه يعيد null بدلاً من التوقف المفاجئ:

String? name = null;
int? length = name?.length; // يعيد null

جرّب بنفسك

void main() {
  // صرح بمتغيراتك القابلة للقيمة الخالية (nullable) هنا
  String? playerName = _;
  int? playerScore = _;
  
  // ?. احصل على طول اسم اللاعب باستخدام المعامل
  int? nameLength = playerName_.length;
  
  // اطبع الطول الأولي للاسم
  print("Player name length: ${nameLength}");
  
  // حدث اسم اللاعب
  playerName = _;
  
  // ?. احصل على الطول المحدث باستخدام المعامل
  nameLength = playerName_.length;
  
  // اطبع طول الاسم المحدث
  print("Player name length: ${nameLength}");
  
  // اطبع نتيجة اللاعب
  print("Player score: ${playerScore}");
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Fundamentals