在Ruby中的Object和BasicObject有什么区别?
这些课程有什么区别? 他们的目的有什么区别?
BasicObject是在Ruby 1.9中引入的,它是Object的父类(因此BasicObject
是Ruby中所有类的父类)。
BasicObject
本身几乎没有方法:
::new #! #!= #== #__id__ #__send__ #equal? #instance_eval #instance_exec
BasicObject可用于创build独立于Ruby对象层次结构的对象层次结构,Delegator类之类的代理对象或其他必须避免来自Ruby方法和类的命名空间污染的用途。
BasicObject不包括内核(对于像puts这样的方法),BasicObject不在标准库的名称空间中,所以如果没有使用完整的类path,就不会find普通的类。
对象在内核模块中混合,使得内置的内核函数可以在全局访问。 尽pipeObject的实例方法是由内核模块定义的
如果你不需要Object
方法,你可以使用BasicObject
作为你的对象的父对象,否则你不需要定义它们。
# when you inherit Object class Tracer instance_methods.each do |m| next if [:__id__, :__send__].include? m undef_method m end # some logic end # when you inherit BasicObject class Tracer < BasicObject # some logic end