Ruby - Как удалить сеттер на объекте - PullRequest
0 голосов
/ 22 марта 2010

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

class B
    class << self
        attr_accessor :var
    end
end

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

Ответы [ 2 ]

1 голос
/ 22 марта 2010

Попробуйте:

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 /

0 голосов
/ 22 марта 2010
class <<B ; remove_method :var= ; end
...