instance_variables()
public
Returns an array of instance variable names for the receiver. Note that
simply defining an accessor does not create the corresponding instance
variable.
class Fred
attr_accessor :a1
def initialize
@iv = 3
end
end
Fred.new.instance_variables
Show source
/*
* call-seq:
* obj.instance_variables => array
*
* Returns an array of instance variable names for the receiver. Note
* that simply defining an accessor does not create the corresponding
* instance variable.
*
* class Fred
* attr_accessor :a1
* def initialize
* @iv = 3
* end
* end
* Fred.new.instance_variables #=> ["@iv"]
*/
VALUE
rb_obj_instance_variables(obj)
VALUE obj;
{
VALUE ary;
ary = rb_ary_new();
switch (TYPE(obj)) {
case T_OBJECT:
case T_CLASS:
case T_MODULE:
if (ROBJECT(obj)->iv_tbl) {
st_foreach_safe(ROBJECT(obj)->iv_tbl, ivar_i, ary);
}
break;
default:
if (!generic_iv_tbl) break;
if (FL_TEST(obj, FL_EXIVAR) || rb_special_const_p(obj)) {
st_data_t tbl;
if (st_lookup(generic_iv_tbl, obj, &tbl)) {
st_foreach_safe((st_table *)tbl, ivar_i, ary);
}
}
break;
}
return ary;
}