سؤال

أقول أنا أكتب mixin وحدة يضيف وظيفة طرف ثالث الدرجة.ومن الواضح أن بعض الأساليب و المتغيرات سبيل المثال أنا تريد أن تجعل من الوصول إلى طرف ثالث الدرجة وعملائه.هذه تشكل واجهة عامة من mixin وحدة.

ولكن أريد بعض الطرق الأخرى والمتغيرات سبيل المثال أن تكون مغلفة.أنا لا أريد لها أن تكون في متناول الطبقة انا الاختلاط, و على وجه الخصوص لا أريد لهم أن قصد تجاوز, الظل, الصراع, أو تتداخل مع mixee الدرجة أساليب أو المتغيرات سبيل المثال-سواء تلك التي قد توجد حاليا أو تلك التي قد تنشأ في المستقبل إذا كان طرف ثالث يعدل الدرجة أنا خلط في.

ما هي الاحتياطات الواجب علي أن تتخذ ، إن وجدت ، للتأكد من بلدي mixin هو "الصحية" في هذا الطريق ؟

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

المحلول

إنشاء كائن منفصل لتغليف الخاص بك وظائف المتغيرات سبيل المثال ، mixin تفويض علنا طرق الوصول إلى هذا الكائن.الآن تحتاج فقط لربط مثيل واحد متغير مع وجوه الخاص بك.حتى يمكن تفادي ذلك من خلال تخزين {Mixee => مندوب} التجزئة في وحدة تقوم بعمل بحث في بداية كل مختلطة في الأسلوب.

نصائح أخرى

وربما يمكنك إنشاء وحدة فرعية لاحتواء كل الأساليب فائدة.

module Foo
  module Utils
    def self.answer
      42
    end
  end
  def helpme
    "the answer is #{Utils.answer}"
  end
end
include Foo
puts helpme
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top