Ruby - Как удалить сеттер на объекте

Учитывая класс как это:

class B
    class << self
        attr_accessor :var
    end
end

Предположим, я не могу изменить исходный исходный код класса B. Как я могу удалить средство установки для переменной класса var? Я попытался использовать что-то вроде B.send("unset_method", "var="), но это не работает (как и remove_method, или перезаписать этот метод с помощью метода var =, который ничего не делает). Есть идеи?

2 ответа

Решение
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/

Другие вопросы по тегам