4

我希望能够在给定对象上取消定义单例方法。

class A
end

a = A.new
def a.foo
  puts "bar"
end

# undef a.foo here
a.foo # should crash
4

2 回答 2

11
class << a
  undef foo
end

或者:

a.singleton_class.send :undef_method, :foo
于 2013-05-21T13:04:54.973 回答
4
class A
end

a = A.new
def a.foo
  puts "bar"
end

a.instance_eval { undef :foo }

a.foo # =>  undefined method `foo' for #<A:0x8469c60> (NoMethodError)
于 2013-05-21T13:10:12.930 回答