當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。