本文简要介绍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类。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。