mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* object.c (Module#const_defined?): [DOC] Revise the documentation.
Patch by Xavier Noria. [Fixes GH-754] https://github.com/ruby/ruby/pull/754 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48320 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
07e1bcaa4f
commit
61ad543a33
2 changed files with 35 additions and 10 deletions
|
@ -1,3 +1,9 @@
|
|||
Sun Nov 9 01:51:50 2014 Benoit Daloze <eregontp@gmail.com>
|
||||
|
||||
* object.c (Module#const_defined?): [DOC] Revise the documentation.
|
||||
Patch by Xavier Noria.
|
||||
[Fixes GH-754] https://github.com/ruby/ruby/pull/754
|
||||
|
||||
Sun Nov 9 00:37:44 2014 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* test/webrick: Examine log and use assert_join_threads.
|
||||
|
|
37
object.c
37
object.c
|
@ -2221,18 +2221,37 @@ rb_mod_const_set(VALUE mod, VALUE name, VALUE value)
|
|||
* mod.const_defined?(sym, inherit=true) -> true or false
|
||||
* mod.const_defined?(str, inherit=true) -> true or false
|
||||
*
|
||||
* Checks for a constant with the given name in <i>mod</i>
|
||||
* If +inherit+ is set, the lookup will also search
|
||||
* the ancestors (and +Object+ if <i>mod</i> is a +Module+.)
|
||||
* Says whether _mod_ or its ancestors have a constant with the given name:
|
||||
*
|
||||
* Returns whether or not a definition is found:
|
||||
* Float.const_defined?(:EPSILON) #=> true, found in Float itself
|
||||
* Float.const_defined?("String") #=> true, found in Object (ancestor)
|
||||
* BasicObject.const_defined?(:Hash) #=> false
|
||||
*
|
||||
* Math.const_defined? "PI" #=> true
|
||||
* IO.const_defined? :SYNC #=> true
|
||||
* IO.const_defined? :SYNC, false #=> false
|
||||
* If _mod_ is a +Module+, additionally +Object+ and its ancestors are checked:
|
||||
*
|
||||
* If neither +sym+ nor +str+ is not a valid constant name a NameError will be
|
||||
* raised with a warning "wrong constant name".
|
||||
* 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
|
||||
*
|
||||
|
|
Loading…
Add table
Reference in a new issue