• 0

كيف أنشئ مثيل صنف من اسمه في روبي؟

لدي اسم صنف وأريد إنشاء مثيل لذلك الصنف حتى أتمكن من التكرار داخل جميع سمات ريلز الموجودة في مخطط الصنف، فكيف أستطيع فعل ذلك؟

أملك اسم الصنف كسلسلة نصية للصنف الذي أحتاج إلى التأكد منه.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

هنالك عدّة طرق في روبي لإنشاء مثيل صنف من اسمه على شكل سلسلة نصية، فإذا كنت تستخدم ريلز على سبيل المثال، استعمل الدالة constantize وهي أسهل وأقصر الطرق كما تبدو في المثال التالي:

clazz = 'ExampleClass'.constantize

لو لم ترد استخدام ريلز فيمكنك استعمال دالة const_get في روبي كما في المثال التالي:

clazz = Object.const_get('ExampleClass')

أما في حالة وجود وحدات كما في المثال التالي:

module Foo
  class Bar
  end
end

فيمكنك استخدام هذه الطريقة:

> clazz = 'Foo::Bar'.split('::').inject(Object) {|o,c| o.const_get c}
  => Foo::Bar
> clazz.new
  => #<Foo::Bar:0x0000010110a4f8>

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن