本文简要介绍ruby语言中 Module.const_missing
的用法。
用法
const_missing(sym) → obj
当引用 mod
中的未定义常量时调用。它被传递一个未定义常量的符号,并返回一个用于该常量的值。以下代码是相同的示例:
def Foo.const_missing(name)
name # return the constant name as Symbol
end
Foo::UNDEFINED_CONST #=> :UNDEFINED_CONST: symbol returned
在下一个示例中,当引用未定义的常量时,它会尝试加载名称为该常量的小写版本的文件(因此假定类 Fred
位于文件 fred.rb
中)。如果找到,则返回加载的类。因此,它实现了类似于 Kernel#autoload
和 Module#autoload
的自动加载函数。
def Object.const_missing(name)
@looked_for ||= {}
str_name = name.to_s
raise "Class not found: #{name}" if @looked_for[str_name]
@looked_for[str_name] = 1
file = str_name.downcase
require file
klass = const_get(name)
return klass if klass
raise "Class not found: #{name}"
end
相关用法
- Ruby Module.const_set用法及代码示例
- Ruby Module.const_get用法及代码示例
- Ruby Module.const_defined?用法及代码示例
- 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_missing。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。