APIdock / Ruby
/
method

__send__

ruby latest stable - Class: Object

Method deprecated or moved

This method is deprecated or moved on the latest stable version. The last existing version (v1_8_7_330) is shown here.

__send__(...)
public

Invokes the method identified by symbol, passing it any arguments specified. You can use __send__ if the name send clashes with an existing method in obj.

class Klass
 def hello(*args)
 "Hello " + args.join('')
 end
end
k = Klass.new 
k.send  :hello, "gentle", "readers" #=> "Hello gentle readers"
/*
 * call-seq:
 * obj.send(symbol [, args...]) => obj
 * obj.__send__(symbol [, args...]) => obj
 * 
 * Invokes the method identified by _symbol_, passing it any
 * arguments specified. You can use <code>\_\_send__</code> if the name
 * +send+ clashes with an existing method in _obj_.
 * 
 * class Klass
 * def hello(*args)
 * "Hello " + args.join(' ')
 * end
 * end
 * k = Klass.new
 * k.send :hello, "gentle", "readers" #=> "Hello gentle readers"
 */
static VALUE
rb_f_send(argc, argv, recv)
 int argc;
 VALUE *argv;
 VALUE recv;
{
 VALUE vid;
 if (argc == 0) rb_raise(rb_eArgError, "no method name given");
 vid = *argv++; argc--;
 PUSH_ITER(rb_block_given_p()?ITER_PRE:ITER_NOT);
 vid = rb_call(CLASS_OF(recv), recv, rb_to_id(vid), argc, argv, 1, Qundef);
 POP_ITER();
 return vid;
}

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