0

このようなクラスが与えられた場合:

class B
    class << self
        attr_accessor :var
    end
end

クラスBの元のソースコードを変更できないとします。クラス変数varのセッターを削除するにはどうすればよいですか?B.send( "unset_method"、 "var =")のようなものを使用しようとしましたが、機能しません(remove_methodも、何もしないvar =メソッドでそのメソッドを上書きすることもできません)。何か案は?

4

2 に答える 2

1

試す:

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/にアクセスしてください。

于 2010-03-22T17:24:51.617 に答える
0
class <<B ; remove_method :var= ; end
于 2010-03-22T17:20:27.280 に答える