Ruby - Как удалить сеттер на объекте
Учитывая класс как это:
class B
class << self
attr_accessor :var
end
end
Предположим, я не могу изменить исходный исходный код класса B. Как я могу удалить средство установки для переменной класса var? Я попытался использовать что-то вроде B.send("unset_method", "var="), но это не работает (как и remove_method, или перезаписать этот метод с помощью метода var =, который ничего не делает). Есть идеи?
2 ответа
Решение
Пытаться:
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/