End of Life Ruby 3.1 has reached end of life and gets no more fixes. Switch to Ruby 4.0 →
instance method
Object#respond_to?
obj.respond_to?(symbol, include_all=false) → true or false
obj.respond_to?(string, include_all=false) → true or false
vm_method.c
View on GitHub ↗
static VALUE
obj_respond_to(int argc, VALUE *argv, VALUE obj)
{
VALUE mid, priv;
ID id;
rb_execution_context_t *ec = GET_EC();
rb_scan_args(argc, argv, "11", &mid, &priv);
if (!(id = rb_check_id(&mid))) {
VALUE ret = basic_obj_respond_to_missing(ec, CLASS_OF(obj), obj,
rb_to_symbol(mid), priv);
if (ret == Qundef) ret = Qfalse;
return ret;
}
return RBOOL(basic_obj_respond_to(ec, obj, id, !RTEST(priv)));
}
Returns true if obj responds to the given method. Private and protected methods are included in the search only if the optional second parameter evaluates to true.
If the method is not implemented, as Process.fork on Windows, File.lchmod on GNU/Linux, etc., false is returned.
If the method is not defined, respond_to_missing? method is called and the result is returned.
When the method name parameter is given as a string, the string is converted to a symbol.
See also
#remove_instance_variable
#respond_to_missing?
#public_send
#send
also in
4.1 · 4.0 · 3.4 · 3.3 · 3.2 · 3.0