0Pricing
Dart Academy · درس

القيم الافتراضية وrequired

اجعل المعاملات اختيارية أو إلزامية

القيم الافتراضية وrequired درس مجاني في Dart Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Dart Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Dart Academy 4 دروس في المجموع.

قيم بديلة منطقية

إن default value هي القيمة البديلة التي تستخدمها Dart عندما يتخطى المستدعي معاملًا. وتغني المستدعين عن تمرير الخيار الواضح في كل مرة.

القيمة الافتراضية للمعاملات المسمّاة

امنح المعامل المسمّى قيمة default باستخدام علامة المساواة. فإذا حذفه المستدعي، تستخدم Dart تلك القيمة بهدوء بدلًا من null.

void greet({String name = "friend"}) {
  print("Hi $name");
}

الاستدعاء باستخدام قيمة افتراضية

تخطَّ المعامل، وستُستخدم قيمة default. أما تمرير قيمة فيستبدل القيمة البديلة في ذلك الاستدعاء وحده.

greet();            // Hi friend
greet(name: "Ada"); // Hi Ada

القيم الافتراضية للمعاملات الموضعية الاختيارية

يمكن للمعاملات الموضعية الاختيارية بين الأقواس المربعة أن تحمل قيمة default أيضًا، فلا تتحول بصمت إلى null.

int pow(int base, [int exp = 2]) {
  return base * exp;
}

يجب أن تكون القيم الافتراضية ثابتة

يجب أن تكون القيمة الافتراضية compile-time constant. تعمل القيم الحرفية وقيم const، لكن المتغير العادي أو استدعاء الدالة لن يعمل.

void f({int n = 10}) {} // ok
// void g({int n = x}) {} // error

الكلمة المفتاحية required

حدّد المعامل المسمّى باستخدام required لإجبار المستدعين على توفيره. ويصبح نسيانه خطأً في الترجمة، لا مفاجأة أثناء التشغيل.

void send({required String to}) {}

لماذا يهم required؟

تكون المعاملات المسمّاة اختيارية افتراضيًا، لذا قد تغيب قيمة مفتاح. تضمن required أن يوفّرها المستدعون دائمًا. 🔒

required مع الأنواع غير القابلة لـ null

يجب أن يكون المعامل المسمّى غير القابل لـ null إما required أو ذا قيمة افتراضية. وإلا فلن تتمكن Dart من ضمان احتوائه على قيمة.

void box({required int w, int h = 10}) {}

الجمع بين required والقيم الافتراضية

يمكن للدالة الواحدة الجمع بين الأسلوبين: بعض المعاملات required، وبعضها الآخر ذو قيم افتراضية منطقية. وهذا يمنح المستدعين واجهة واضحة ومرنة.

void user({required String id, bool active = true}) {}

القيمة القابلة لـ null دون قيمة افتراضية

إذا كان المعامل المسمّى nullable، فيمكن أن تكون قيمته الافتراضية null ببساطة. ولا حاجة إلى required أو قيمة افتراضية صريحة.

void note({String? text}) {} // text may be null

مواقع استدعاء أنظف

تقلل القيم الافتراضية من حجم مواقع الاستدعاء. إذ يمرر المستدعون ما هو غير معتاد فقط، بينما تتولى default معالجة الحالة الشائعة بسلاسة. ✨

تحقق سريع

لنتأكد من فهمك لـ required والقيم الافتراضية.

مراجعة

يمكنك الآن تعيين defaults للمعاملات الاختيارية، واستخدام required لجعل المعاملات المهمة إلزامية. أصبحت دوالك الآن آمنة ومريحة. 🎉

الأسئلة الشائعة

هل درس «القيم الافتراضية وrequired» مجاني؟

نعم — نص درس «القيم الافتراضية وrequired» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Dart Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Dart Academy 4 دروس في المجموع.

ماذا ستتعلم في «القيم الافتراضية وrequired»؟

اجعل المعاملات اختيارية أو إلزامية تتمرن على Dart Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Dart Academy؟

لا تُشترط خبرة سابقة. Dart Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «القيم الافتراضية وrequired»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Dart Academy هذا؟

نعم. كل درس في Dart Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. التصريح بالدوال وأنواع الإرجاع
  2. المعاملات الموضعية في مقابل المسماة
  3. القيم الافتراضية وrequired
  4. الدوال كقيم من الدرجة الأولى
← العودة إلى Dart Academy