أعضاء Extension الثابتة والتعارضات
حلّ التعارضات وأضف مساعدات ثابتة
أعضاء Extension الثابتة والتعارضات درس مجاني في Dart Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Dart Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Dart Academy 4 دروس في المجموع.
أداتان مساعدتان بالاسم نفسه
إذا استوردت امتدادين يضيف كل منهما طريقة باسم parse إلى String، فلن تعود Dart تعرف أيّهما تقصد.
لماذا تحدث التعارضات
أعضاء الامتداد ليسوا جزءًا من النوع نفسه، لذلك تصبح الطريقتان اللتان تحملان الاسم نفسه حالة ambiguity يرفض المصرّف التخمين بشأنها.
حدّد الخطأ
عند حدوث ذلك، تُبلغ Dart عن امتداد ambiguous وتتوقف، بدلًا من اختيار أحدهما لك بصمت.
"7".parse(); // error: ambiguous between two extensionsأخفِ أحدهما عند الاستيراد
استخدم hide في تعليمة الاستيراد لإزالة أحد الامتدادين المتعارضين حسب اسمه، وترك الآخر متاحًا للفوز بالاستدعاء.
import 'b.dart' hide NumberParsing;أو اعرض أحدهما فقط
الحيلة المقابلة هي show، التي تستورد الأسماء التي تدرجها فقط وتستبعد البقية بهدوء.
import 'a.dart' show NumberParsing;استدعه صراحةً
يمكنك أيضًا تحديد التطبيق بدقة باستخدام explicit: سمِّ الامتداد ومرّر القيمة بين قوسين.
NumberParsing("7").parse();أضف أعضاء ساكنين
يمكن أن تحتوي الامتدادات على أعضاء static أيضًا. وتنتمي هذه الأعضاء إلى اسم الامتداد، لا إلى القيم التي تستدعي الطرق عليها.
extension MathX on num {
static num clampLow(num x) => x < 0 ? 0 : x;
}الوصول إلى الأعضاء الساكنة بالاسم
استدعِ عضوًا ساكنًا من خلال extension name، تمامًا كما تستدعي عضوًا ساكنًا في فئة. ولا تشارك القيمة المستقبِلة في ذلك.
print(MathX.clampLow(-3)); // 0تحتاج الأعضاء الساكنة إلى اسم
لأنك تصل إلى الأعضاء الساكنة من خلال الامتداد، فلا يمكن لامتداد unnamed إتاحة هذه الأعضاء. سمِّ الامتداد لاستخدام الأعضاء الساكنة.
الأعضاء مقابل الأعضاء الساكنة
تستخدم أعضاء المثيلات this وتعمل على قيمة، أما الأعضاء الساكنة فتتجاهل القيمة وتنتمي إلى الامتداد نفسه.
خطط لتجنب التعارضات
امنح الامتدادات وأعضاءها names واضحة ومحددة. فالتسمية الجيدة تمنع معظم التعارضات قبل الحاجة إلى show أو hide.
تحقق سريع
تعارض واحد، وإصلاح واضح واحد. أيهما يعمل؟
مراجعة: الأعضاء الساكنة والتعارضات
يمكنك حل تعارضات الامتدادات باستخدام show أو hide أو الاستدعاءات الصريحة، وإضافة أعضاء ساكنة تصل إليها عبر اسم الامتداد. 🧩
الأسئلة الشائعة
هل درس «أعضاء Extension الثابتة والتعارضات» مجاني؟
نعم — نص درس «أعضاء Extension الثابتة والتعارضات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Dart Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Dart Academy 4 دروس في المجموع.
ماذا ستتعلم في «أعضاء Extension الثابتة والتعارضات»؟
حلّ التعارضات وأضف مساعدات ثابتة تتمرن على Dart Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Dart Academy؟
لا تُشترط خبرة سابقة. Dart Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «أعضاء Extension الثابتة والتعارضات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Dart Academy هذا؟
نعم. كل درس في Dart Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- كتابة أول Extension لك
- Extensions على Generics
- أعضاء Extension الثابتة والتعارضات
- Extension Types للتغليف من دون تكلفة