APIdock / Ruby
/
method

undef_method

ruby latest stable - Class: Module
undef_method(*args)
public

Prevents the current class from responding to calls to the named method. Contrast this with remove_method, which deletes the method from the particular class; Ruby will still search superclasses and mixed-in modules for a possible receiver. String arguments are converted to symbols.

class Parent
 def hello
 puts "In parent"
 end
end
class Child < Parent
 def hello
 puts "In child"
 end
end
c = Child.new 
c.hello
class Child
 remove_method  :hello # remove from child, still in parent
end
c.hello
class Child
 undef_method  :hello # prevent any calls to 'hello'
end
c.hello

produces:

In child
In parent
prog.rb:23: undefined method `hello' for #<Child:0x401b3bb4> (NoMethodError)
static VALUE
rb_mod_undef_method(int argc, VALUE *argv, VALUE mod)
{
 int i;
 for (i = 0; i < argc; i++) {
 VALUE v = argv[i];
 ID id = rb_check_id(&v);
 if (!id) {
 rb_method_name_error(mod, v);
 }
 rb_undef(mod, id);
 }
 return mod;
}

AltStyle によって変換されたページ (->オリジナル) /