سؤال

هل هناك طريقة افتراضية أو ملحق فئة يمكنني إضافته إلى فئة Ruby التي يتم استدعاؤها إذا لم يخرج ملحق (خاصية Ruby like)؟يمكنني بعد ذلك كتابة بعض التعليمات البرمجية المخصصة للرد منها مثل قائمة المصفوفات المقروءة من قاعدة بيانات حيث يمكن الوصول إلى القيمة مثل ملحق دون أن أكتب رمز الوصول (نظرًا لأنه إذا تمت قراءته من قاعدة بيانات فهو غير معروف).

باستخدام روبي التصوير بالرنين المغناطيسي 1.9

شكرًا لك!

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

المحلول

نعم، يطلق عليه method_missing;يتم استدعاؤه عند استخدام طريقة غير محددة.يمكنك استخدامه لإضافة أو محاكاة أي طريقة تريدها، بما في ذلك أدوات الوصول.

على سبيل المثال، إذا رميت هذا على Hash يمكنك التعامل مع محتويات التجزئة كخصائص:

h = {}
def h.method_missing(*args)
    if args.length == 1
        self[args[0]]
      elsif args.length == 2 and args[0].to_s =~ /^(.*)=$/
        self[$1.intern] = args[1]
      else
        super
      end
    end

دعنا نكتب:

h.bob = "Robert"

و

if h.bill == "William" ...

وهكذا بالإضافة إلى ما هو أكثر طبيعية h[:bob] = ... أسلوب.

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