mod.const_defined?(sym, inherit=true) â true or false
Instance Public methods
Says whether mod or its ancestors have a constant with the given name:
1 2 3 | Float.const_defined?(: EPSILON ) #=> true, found in Float itself Float.const_defined?( "String" ) #=> true, found in Object (ancestor) BasicObject.const_defined?(: Hash ) #=> false |
If mod is a Module
, additionally Object
and its ancestors are checked:
1 | Math.const_defined?(: String ) #=> true, found in Object |
In each of the checked classes or modules, if the constant is not present
but there is an autoload for it, true
is returned directly
without autoloading:
1 2 3 4 | module Admin autoload :User, 'admin/user' end Admin.const_defined?(:User) #=> true |
If the constant is not found the callback const_missing
is
not called and the method returns false
.
If inherit
is false, the lookup only checks the constants in
the receiver:
1 2 | IO .const_defined?(: SYNC ) #=> true, found in File::Constants (ancestor) IO .const_defined?(: SYNC , false ) #=> false, not found in IO itself |
In this case, the same logic for autoloading applies.
If the argument is not a valid constant name NameError
is
raised with the message âwrong constant name nameâ:
1 | Hash .const_defined? 'foobar' #=> NameError: wrong constant name foobar |
Please login to continue.