Method: BasicObject#instance_exec

Defined in:
vm_eval.c

#instance_exec(arg...) {|var...| ... } ⇒ Object

Executes the given block within the context of the receiver (obj). In order to set the context, the variable self is set to obj while the code is executing, giving the code access to obj’s instance variables. Arguments are passed as block parameters.

class KlassWithSecret
  def initialize
    @secret = 99
  end
end
k = KlassWithSecret.new
k.instance_exec(5) {|x| @secret+x }   #=> 104

Yields:

  • (var...)

Returns:



1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
# File 'vm_eval.c', line 1697

VALUE
rb_obj_instance_exec(int argc, const VALUE *argv, VALUE self)
{
    VALUE klass;

    if (SPECIAL_CONST_P(self)) {
	klass = rb_special_singleton_class(self);
    }
    else {
	klass = rb_singleton_class(self);
    }
    return yield_under(klass, self, rb_ary_new4(argc, argv));
}