本文簡要介紹ruby語言中 Module.const_defined?
的用法。
用法
const_defined?(sym, inherit=true) → true or false
const_defined?(str, inherit=true) → true or false
表示 mod
或其祖先是否具有給定名稱的常量:
Float.const_defined?(:EPSILON) #=> true, found in Float itself
Float.const_defined?("String") #=> true, found in Object (ancestor)
BasicObject.const_defined?(:Hash) #=> false
如果 mod
是 Module
,則另外檢查 Object
及其祖先:
Math.const_defined?(:String) #=> true, found in Object
在每個檢查的類或模塊中,如果常量不存在但有自動加載,則直接返回 true
而不自動加載:
module Admin
autoload :User, 'admin/user'
end
Admin.const_defined?(:User) #=> true
如果未找到該常量,則不會調用回調 const_missing
並且該方法返回 false
。
如果inherit
為假,則查找僅檢查接收器中的常量:
IO.const_defined?(:SYNC) #=> true, found in File::Constants (ancestor)
IO.const_defined?(:SYNC, false) #=> false, not found in IO itself
在這種情況下,適用於自動加載的相同邏輯。
如果參數不是有效的常量名,則會引發 NameError
並顯示消息“錯誤的常量名 name
”:
Hash.const_defined? 'foobar' #=> NameError: wrong constant name foobar
相關用法
- Ruby Module.const_missing用法及代碼示例
- Ruby Module.const_set用法及代碼示例
- Ruby Module.const_get用法及代碼示例
- Ruby Module.const_source_location用法及代碼示例
- Ruby Module.constants用法及代碼示例
- Ruby Module.class_variables用法及代碼示例
- Ruby Module.class_exec用法及代碼示例
- Ruby Module.class_variable_get用法及代碼示例
- Ruby Module.class_variable_defined?用法及代碼示例
- Ruby Module.class_eval用法及代碼示例
- Ruby Module.class_variable_set用法及代碼示例
- Ruby Module.attr_accessor用法及代碼示例
- Ruby Module.method_removed用法及代碼示例
- Ruby Module.private用法及代碼示例
- Ruby Module.deprecate_constant用法及代碼示例
- Ruby Module.instance_method用法及代碼示例
- Ruby Module.included_modules用法及代碼示例
- Ruby Module.singleton_class?用法及代碼示例
- Ruby Module.module_exec用法及代碼示例
- Ruby Module.included用法及代碼示例
- Ruby Module.include?用法及代碼示例
- Ruby Module.ruby2_keywords用法及代碼示例
- Ruby Module.module_eval用法及代碼示例
- Ruby Module.extend_object用法及代碼示例
- Ruby Module.autoload用法及代碼示例
注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 Module.const_defined?。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。