method
remove_class_variable
v1_8_7_330 -
Show latest stable
- Class:
Module
remove_class_variable(p1)public
Removes the definition of the sym, returning that constant’s value.
class Dummy @@var = 99 puts @@var remove_class_variable(:@@var) puts(defined? @@var) end
produces:
99 nil
/*
* call-seq:
* remove_class_variable(sym) => obj
*
* Removes the definition of the <i>sym</i>, returning that
* constant's value.
*
* class Dummy
* @@var = 99
* puts @@var
* remove_class_variable(:@@var)
* puts(defined? @@var)
* end
*
* <em>produces:</em>
*
* 99
* nil
*/
VALUE
rb_mod_remove_cvar(mod, name)
VALUE mod, name;
{
ID id = rb_to_id(name);
VALUE val;
if (!rb_is_class_id(id)) {
rb_name_error(id, "wrong class variable name %s", rb_id2name(id));
}
if (!OBJ_TAINTED(mod) && rb_safe_level() >= 4)
rb_raise(rb_eSecurityError, "Insecure: can't remove class variable");
if (OBJ_FROZEN(mod)) rb_error_frozen("class/module");
if (RCLASS(mod)->iv_tbl && st_delete(ROBJECT(mod)->iv_tbl, (st_data_t*)&id, &val)) {
return val;
}
if (rb_cvar_defined(mod, id)) {
rb_name_error(id, "cannot remove %s for %s",
rb_id2name(id), rb_class2name(mod));
}
rb_name_error(id, "class variable %s not defined for %s",
rb_id2name(id), rb_class2name(mod));
return Qnil; /* not reached */
} Related methods
- Instance methods
- <
- <=
- <=>
- ==
- ===
- >
- >=
- alias_method
- ancestors
- append_features
- attr
- attr_accessor
- attr_reader
- attr_writer
- autoload
- autoload?
- class_eval
- class_exec
- class_variable_defined?
- class_variable_get
- class_variable_set
- class_variables
- const_defined?
- const_get
- const_missing
- const_set
- constants
- define_method
- extend_object
- extended
- freeze
- include
- include?
- included
- included_modules
- initialize_copy
- instance_method
- instance_methods
- method_added
- method_defined?
- method_removed
- method_undefined
- module_eval
- module_exec
- module_function
- name
- private
- private_class_method
- private_instance_methods
- private_method_defined?
- protected
- protected_instance_methods
- protected_method_defined?
- public
- public_class_method
- public_instance_methods
- public_method_defined?
- remove_class_variable
- remove_const
- remove_method
- to_s
- undef_method
- Class methods
- constants
- nesting
- new