来自ruby对象的undef单例方法

时间:2013-05-21 13:00:41

标签: ruby

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

class A
end

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

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

2 个答案:

答案 0 :(得分:11)

class << a
  undef foo
end

可替换地:

a.singleton_class.send :undef_method, :foo

答案 1 :(得分:3)

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)