0Pricing
Dart Academy · درس

نوعا dynamic وObject

افهم الأنواع العليا في Dart ومتى تناسبك

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

لدى Dart أنواع عليا أيضًا

قد تحتاجون أحيانًا إلى متغير يمكنه الاحتفاظ بأي قيمة. يوفّر Dart نوعين علويين من هذا القبيل: Object وdynamic.

يحتفظ Object بأي قيمة بأمان

يمكن لـ Object تخزين أي قيمة غير null، لكن Dart يواصل التحقق من كل استدعاء دالة مقارنةً بنوع Object.

Object thing = 42;
thing = "now text";

يقيّد Object الدوال المتاحة

عند استخدام Object، لا تحصلون إلا على الدوال المشتركة بين جميع القيم، مثل toString. ويجب إجراء تحويل نوع قبل استخدام السلوك الخاص بنوع معين.

Object o = "hi";
// o.toUpperCase(); // error

يعطّل dynamic عمليات التحقق

يمكن لمتغير dynamic الاحتفاظ بأي قيمة أيضًا، لكنه يعطّل عمليات التحقق وقت الترجمة. ولا تظهر الأخطاء إلا أثناء التشغيل.

dynamic d = "hi";
d.toUpperCase(); // allowed

قد يتسبب dynamic في انهيار متأخر

بما أن عمليات التحقق معطّلة، قد ينجح استدعاء خاطئ على dynamic في الترجمة، لكنه قد يتسبب في خطأ أثناء التشغيل. فالسهولة لها تكلفة.

dynamic d = 5;
d.toUpperCase(); // runtime error

Object أكثر أمانًا من dynamic

فضّلوا Object عندما تحتاجون فعلًا إلى الاحتفاظ بأي قيمة. فأنتم بذلك تحافظون على أمان الأنواع وتتيحون للمترجم حماية استدعاءاتكم.

سؤال حول Object وObject القابل للإلغاء

تستبعد الصيغة العادية من Object القيمة null. وإذا كان من المحتمل أن تكون القيمة null، فاستخدموا الصيغة القابلة للإلغاء من Object للسماح بها أيضًا.

Object? maybe = null;

التحويل مجددًا إلى نوع

استخرجوا نوعًا فعليًا من Object باستخدام تحويل النوع as، ثم استدعوا دواله مع استعادة التحقق الكامل.

Object o = "hi";
var up = (o as String).toUpperCase();

لماذا لا يزال dynamic موجودًا

يساعد dynamic عند التعامل مع البيانات غير محددة النوع، مثل JSON ذي البنية المرنة، عندما يكون هيكل البيانات غير معروف مسبقًا.

تجنبوا dynamic افتراضيًا

غالبًا ما يؤدي اللجوء إلى dynamic إلى إخفاء الأخطاء حتى يواجهها المستخدمون. استخدموا أنواعًا محددة أو Object ما لم تكونوا بحاجة إليه فعلًا.

الاختيار بين النوعين

هل تحتاجون إلى أي قيمة مع الحفاظ على الأمان؟ اختاروا Object. هل تحتاجون إلى تجاوز عمليات التحقق للتعامل مع بيانات فوضوية؟ استخدموا dynamic باعتدال وعن قصد.

اختبار سريع

ما الفرق الأساسي بين Object وdynamic؟

مراجعة: dynamic وObject

تعلّمتم أن Object يحتفظ بأي قيمة مع الحفاظ على الأمان، بينما يحتفظ dynamic بأي قيمة لكنه يتجاوز عمليات التحقق. فضّلوا Object أو الأنواع المحددة. 🛡️

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

هل درس «نوعا dynamic وObject» مجاني؟

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

ماذا ستتعلم في «نوعا dynamic وObject»؟

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

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

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

كم من الوقت يستغرق درس «نوعا dynamic وObject»؟

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

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

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

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

  1. شرح var وfinal وconst
  2. الأنواع الأساسية: int وdouble وString وbool
  3. استنتاج النوع في مقابل الأنواع الصريحة
  4. نوعا dynamic وObject
← العودة إلى Dart Academy