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