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:
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:
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:
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:
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â:
Hash.const_defined? 'foobar' #=> NameError: wrong constant name foobar
Please login to continue.