インスタンスからのみメソッドを削除する
概要
単一インスタンスからメソッドを削除することはできますか?
class Foo
def a_method
"a method was invoked"
end
end
f1 = Foo.new
puts f1.a_method # => a method was invoked
これで、クラスから a_method を削除し、すでに作成されたオブジェクトから a_method を削除できます。
class Foo
remove_method(:a_method)
end
同じオブジェクトから a_method を呼び出した場合:
puts f1.a_method # => undefined method
別のオブジェクトを作成すると、次のようになります。
f2 = Foo.new
puts f2.a_method # => undefined method
特定の単一オブジェクトからメソッドのみを削除するにはどうすればよいですか?
解決策
はい、可能です:
f1.instance_eval('undef :a_method')