本文簡要介紹ruby語言中 BasicObject類
的用法。
BasicObject
是 Ruby 中所有類的父類。這是一個顯式的空白類。
BasicObject
可用於創建獨立於 Ruby 對象層次結構的對象層次結構、代理對象(如 Delegator
類)或其他必須避免來自 Ruby 方法和類的命名空間汙染的用途。
為避免汙染其他用戶的 BasicObject
,應創建一個適當命名的 BasicObject
子類,而不是直接修改BasicObject:
class MyObjectSystem < BasicObject
end
BasicObject
不包括 Kernel
(對於像 puts
這樣的方法)並且 BasicObject
位於標準庫的命名空間之外,因此如果不使用完整的類路徑,將無法找到通用類。
可以使用多種策略將標準庫的有用部分提供給 BasicObject
的子類。子類可以 include Kernel
獲得 puts
、 exit
等。可以創建和包含自定義 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 定義的方法:
::new
-
返回一個新的 BasicObject 實例。
- !
-
返回
self
的布爾否定:true
或false
。
- !=
-
返回
self
和給定對象是否not
相等。
- ==
-
返回
self
和給定對象是否等價。
- __ID__
-
返回
self
的整數對象標識符。
- __發送__
-
調用由給定符號標識的方法。
- BasicObject.equal?
-
返回
self
和給定對象是否是同一個對象。
- BasicObject.instance_eval
-
在
self
的上下文中評估給定的字符串或塊。
- BasicObject.instance_exec
-
在
self
的上下文中執行給定的塊,傳遞給定的參數。
- BasicObject.method_missing
-
Method
在self
上調用未定義的方法時調用。
- BasicObject.singleton_method_added
-
Method
在將單例方法添加到self
時調用。
- BasicObject.singleton_method_removed
-
Method
在從self
中添加單例方法時調用。
- BasicObject.singleton_method_undefined
-
Method
在self
中未定義單例方法時調用。
相關用法
- Ruby BasicObject.equal?用法及代碼示例
- Ruby BasicObject.instance_eval用法及代碼示例
- Ruby BasicObject.obj ==用法及代碼示例
- Ruby BasicObject.method_missing用法及代碼示例
- Ruby BasicObject.singleton_method_undefined用法及代碼示例
- Ruby BasicObject.send用法及代碼示例
- Ruby BasicObject.instance_exec用法及代碼示例
- Ruby BasicObject.singleton_method_added用法及代碼示例
- Ruby BasicObject.singleton_method_removed用法及代碼示例
- Ruby BasicObject.__id__用法及代碼示例
- Ruby BasicSocket.send用法及代碼示例
- Ruby BasicSocket.remote_address用法及代碼示例
- Ruby BasicSocket.recv用法及代碼示例
- Ruby BasicSocket.do_not_reverse_lookup用法及代碼示例
- Ruby BasicSocket.do_not_reverse_lookup =用法及代碼示例
- Ruby BasicSocket.connect_address用法及代碼示例
- Ruby BasicSocket.recv_nonblock用法及代碼示例
- Ruby BasicSocket.recvmsg用法及代碼示例
- Ruby BasicSocket.getsockopt用法及代碼示例
- Ruby BasicSocket.getpeereid用法及代碼示例
- Ruby BasicSocket.local_address用法及代碼示例
- Ruby BasicSocket.shutdown用法及代碼示例
- Ruby BasicSocket.close_read用法及代碼示例
- Ruby BasicSocket.getpeername用法及代碼示例
- Ruby BasicSocket.getsockname用法及代碼示例
注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 BasicObject類。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。