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


Ruby BasicObject類用法及代碼示例


本文簡要介紹ruby語言中 BasicObject類 的用法。

BasicObject 是 Ruby 中所有類的父類。這是一個顯式的空白類。

BasicObject 可用於創建獨立於 Ruby 對象層次結構的對象層次結構、代理對象(如 Delegator 類)或其他必須避免來自 Ruby 方法和類的命名空間汙染的用途。

為避免汙染其他用戶的 BasicObject ,應創建一個適當命名的 BasicObject 子類,而不是直接修改BasicObject:

class MyObjectSystem < BasicObject
end

BasicObject 不包括 Kernel (對於像 puts 這樣的方法)並且 BasicObject 位於標準庫的命名空間之外,因此如果不使用完整的類路徑,將無法找到通用類。

可以使用多種策略將標準庫的有用部分提供給 BasicObject 的子類。子類可以 include Kernel 獲得 putsexit 等。可以創建和包含自定義 Kernel-like 模塊,或者可以通過 method_missing 使用委托:

class MyObjectSystem < BasicObject
  DELEGATE = [:puts, :p]

  def method_missing(name, *args, &block)
    return super unless DELEGATE.include? name
    ::Kernel.send(name, *args, &block)
  end

  def respond_to_missing?(name, include_private = false)
    DELEGATE.include?(name) or super
  end
end

::File::Enumerator 等根目錄引用所需的常量,可以在 BasicObject 子類中獲得對 Ruby 標準庫中的類和模塊的訪問。與 method_missing 一樣,const_missing 可用於將常量查找委托給 Object

class MyObjectSystem < BasicObject
  def self.const_missing(name)
    ::Object.const_get(name)
  end
end

這裏有什麽

這些是為 BasicObject 定義的方法:

相關用法


注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 BasicObject類。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。