当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Module.const_missing用法及代码示例


本文简要介绍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-lang.org大神的英文原创作品 Module.const_missing。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。