public Method

Object.instance_variable_get(p1)

obj.instance_variable_get(symbol)     obj

Returns the value of the given instance variable, or nil if the instance variable is not set. The @ part of the variable name should be included for regular instance variables. Throws a NameError exception if the supplied symbol is not valid as an instance variable name.

class Fred
  def initialize(p1, p2)
    @a, @b = p1, p2
  end
end
fred = Fred.new('cat', 99)
fred.instance_variable_get(:@a)    #=> "cat"
fred.instance_variable_get("@b")   #=> 99

Source Code

/*
*  call-seq:
*     obj.instance_variable_get(symbol)    => obj
*
*  Returns the value of the given instance variable, or nil if the
*  instance variable is not set. The <code>@</code> part of the
*  variable name should be included for regular instance
*  variables. Throws a <code>NameError</code> exception if the
*  supplied symbol is not valid as an instance variable name.
*     
*     class Fred
*       def initialize(p1, p2)
*         @a, @b = p1, p2
*       end
*     end
*     fred = Fred.new('cat', 99)
*     fred.instance_variable_get(:@a)    #=> "cat"
*     fred.instance_variable_get("@b")   #=> 99
*/

static VALUE
rb_obj_ivar_get(obj, iv)
   VALUE obj, iv;
{
   ID id = rb_to_id(iv);

   if (!rb_is_instance_id(id)) {
       rb_name_error(id, "`%s' is not allowed as an instance variable name", rb_id2name(id));
   }
   return rb_ivar_get(obj, id);
}
Comments

Have your say
Please use Textile formatting (click here for a cheat sheet). Use <code/> and <pre/> for code samples.
Click here to login with OpenID to to post comments.