在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