سؤال

إعطاء فصل مثل هذا:

class B
    class << self
        attr_accessor :var
    end
end

لنفترض أنه لا يمكنني تعديل رمز المصدر الأصلي للفئة B. كيف يمكنني إجراء إزالة Setter على متغير الفئة VAR؟ لقد حاولت استخدام شيء مثل B.Send ("unset_method" ، "var =") ، لكن هذا لا يعمل (ولا يزيل remove_method ، أو الكتابة فوق هذه الطريقة بطريقة var = لا تفعل أي شيء). أيه أفكار؟

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

المحلول

class <<B ; remove_method :var= ; end

نصائح أخرى

محاولة:

class B
  class << self
    undef var=
  end
end

قد ترغب في استخدام remove_method بدلاً من ذلك:

class B
  class << self
    remove_method :var=
  end
end

لرؤية الاختلافات ، انتقل إلى:http://www.nach-vorne.de/2008/2/28/undef_method-remove_method/

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