سؤال

ما هو الفرق بين Mixins والسمات؟

وفقا ل Wikipedia, ، وحدات روبي هي نوع من السمات مثل. كيف ذلك؟

هل كانت مفيدة؟

المحلول

  1. قد تحتوي mixins على الصفات الحالة (التقليدية) لا.
  2. استخدام Mixins "دقة النزاعات الضمنية"، والسمات استخدام "حل النزاعات الصريحة"
  3. تعتمد Mixins على التشفير والسمات بالارض.

محاضرة عن الصفات

إعلان 1.في Mixins، يمكنك تحديد متغيرات المثيل. الصفات لا تسمح بذلك. يجب تقديم الدولة من خلال إنشاء الفصل (= فئة باستخدام السمات)

م 2.قد يكون هناك تعارض الاسم. اثنين مختلفي (MA و MB) أو الصفات (TA و TB) تحديد الطريقة مع نفس التعريف foo():void.

Mixin MA {
    foo():void {
        print 'hello'
    }
}

Mixin MB {
    foo():void {
        print 'bye'
    }
}

Trait TA {
    foo():void {
        print 'hello'
    }
}

Trait TB {
    foo():void {
        print 'bye'
    }
}

في Mixins النزاعات في تأليف الطبقة C mixins MA, MB يتم حلها ضمنيا.

Class C mixins MA, MB {
    bar():void {
        foo();
    }
}

سيدصل هذا foo():void من MA

من ناحية أخرى أثناء استخدام السمات، يتعين على الصنف أن يحل النزاعات.

Class C mixins TA, TB {
    bar():void {
        foo();
    }
}

سيقوم هذا الرمز برفع النزاع (تعريفان foo():void).

3 ملا تعتمد دلالات الطريقة عما إذا كان يعرف في سمة أو في فصل يستخدم السمة.

وبعبارة أخرى، فإنه لا يهم الشارع يتكون الفصل من الصفات أو رمز الصفات "نسخ مقدس" في الفصل.

نصائح أخرى

توضح هذه الصفحات الفرق في لغة البرمجة D.

http://dlang.org/mixin.html.

http://dlang.org/traits.html.

تتميز Mixins في هذا السياق بتوليد رمز على الطيران، ثم يتم إدراجها في هذه النقطة في التعليمات البرمجية أثناء التجميع. مفيد جدا ل DSLs بسيطة.

الصفات هي قيم خارجية تجميع الوقت (بدلا من التعليمات العامة التي تم إنشاؤها من مصدر خارجي). الفرق هو دقيق. مزيج إضافة المنطق، والسمات إضافة بيانات مثل معلومات نوع تجميع الوقت.

لا أعرف الكثير عن الروبي، ولكن نأمل أن يساعد هذا إلى حد ما.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top