تكرار السؤال: …
الإجابة المختصرة
extension تضيف ميثودز أو getters لنوع موجود من غير تعديل الكلاس الأصلي أو إنشاء subclass، وتُحسم الاستدعاءات حسب النوع الثابت.
الشرح
الـextension مفيدة لتجميع تحويل أو سلوك صغير قريب من النوع الذي يعمل عليه. هي لا تضيف state ولا تغيّر واجهة الكلاس فعليًا، كما أن اختيار extension يعتمد على static type؛ لذلك لا تستخدمها لبناء polymorphism يحتاج dispatch وقت التشغيل.
مثال بالكود
extension StringParsing on String {
int? toSafeInt() => int.tryParse(this);
}
final count = "42".toSafeInt();أخطاء شائعة
- توقع أن extension تضيف حقولًا أو state للكائن.
- نسيان تأثير static type عند وجود extension بنفس الاسم.