rails - ¿Cuál es la diferencia entre Object y BasicObject en Ruby?
haml to html (1)
¿Cuál es la diferencia entre estas clases? ¿Cuál es la diferencia entre sus propósitos?
BasicObject se introdujo en Ruby 1.9 y es un elemento principal de Object (por lo tanto, BasicObject
es la clase principal de todas las clases en Ruby).
BasicObject
casi no tiene métodos en sí mismo:
::new #! #!= #== #__id__ #__send__ #equal? #instance_eval #instance_exec
BasicObject se puede usar para crear jerarquías de objetos independientes de la jerarquía de objetos de Ruby, objetos proxy como la clase Delegator u otros usos donde se debe evitar la contaminación del espacio de nombres de los métodos y clases de Ruby.
BasicObject no incluye Kernel (para métodos como puts) y BasicObject está fuera del espacio de nombres de la biblioteca estándar, por lo que las clases comunes no se encontrarán sin utilizar una ruta de clase completa.
Las combinaciones de objetos en el módulo Kernel hacen que las funciones incorporadas del kernel sean accesibles globalmente. Aunque los métodos de instancia de Object están definidos por el módulo Kernel ...
Puede usar BasicObject
como padre de su objeto en caso de que no necesite métodos de Object
y los definiría de otra manera:
# 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